Previous << Dependency Manager
Next >> Cadence Linter
Flow CLIは、Cadenceテストを実行するためのわかりやすいコマンドを提供しており、開発者はスクリプトとスマートコントラクトを効果的に検証することができます。
プロジェクト内のすべてのテストを実行するには、次のようにします。
flow test
flow test
コマンドは、プロジェクト内の_test.cdc
で終わるすべてのテストスクリプトを自動的に検出し、実行します。
注意:
test
コマンドは、適切に初期化された設定を必要とします。もしあなたがFlowプロジェクトをまだセットアップしていない場合は、flow initガイドを参照してください。
Prerequisites
テストを実行する前に、flow.jsonファイルでスマートコントラクトが適切に設定されていることを確認してください。必要なテスト用エイリアスも含みます。
Setting Up Testing Aliases in Contracts
もしあなたのテストがコントラクトのデプロイやコントラクトとのやり取りを含む場合は、flow.json
設定ファイルの中のcontracts
セクションにコントラクトを追加する必要があります。特に、コントラクト名、ソースの場所、testing
環境のためのアドレスのエイリアスを含む必要があります。
Example flow.json
configuration:
{
"contracts": {
"Counter": {
"source": "cadence/contracts/Counter.cdc",
"aliases": {
"testing": "0x0000000000000007"
}
}
},
"networks": {
/* ... your network configurations */
},
"accounts": {
/* ... your account configurations */
},
"deployments": {
/* ... your deployment configurations */
}
}
testing
エイリアスには、以下のアドレスのいずれかを使用できます。
0x0000000000000005
0x0000000000000006
0x0000000000000007
0x0000000000000008
0x0000000000000009
0x000000000000000A
0x000000000000000B
0x000000000000000C
0x000000000000000D
0x000000000000000E
Note:コントラクトとエイリアスの設定に関する詳細は、Flow CLI Configurationのドキュメントを参照してください。
Example Usage
あなたのプロジェクトディレクトリにtest_script_test.cdc
というテストスクリプトがあるものとします。これは、テスト環境で実行されるCadenceスクリプトの機能を検証するものです。
import Test
access(all) let blockchain = Test.newEmulatorBlockchain()
access(all) fun testSumOfTwo() {
let scriptResult = blockchain.executeScript(
"access(all) fun main(a: Int, b: Int): Int { return a + b }",
[2, 3]
)
Test.expect(scriptResult, Test.beSucceeded())
let sum = scriptResult.returnValue! as! Int
Test.assertEqual(5, sum)
}
このスクリプトでは、単一のテストケースtestSumOfTwo
を定義し、2つの整数を足し合わせるCadenceスクリプト(a + b)
が期待通りに動作するかどうかを確認します。結果が5
という期待値と一致すれば、テストは合格です。
CLIを使用してあなたのプロジェクト内のすべてのテストを実行できます。
$ flow test
Flow CLI は、_test.cdc
で終わるすべてのテストスクリプトを検出し、それらを実行します。結果はターミナルに表示されます。
Test results:
- PASS: test_script_test.cdc > testSumOfTwo
Cadenceでのテスト作成の詳細については、Cadence Testing Frameworkのドキュメントを参照してください。
Running Specific Tests
もしあなたがすべてのテストではなく特定のテストスクリプトを実行したい場合、テストファイルへのパスを指定することができます。
flow test path/to/your/test_script_test.cdc
これは、指定したファイルに含まれるテストのみを実行します。
Flags
flow test
コマンドは、テスト実行の管理とカバレッジレポートのための追加機能を提供する、いくつかのフラグをサポートしています。
Coverage Report
- Flag:
--cover
- Default:
false
--cover
フラグは、テスト対象のコードのカバレッジを計算し、スクリプトやコントラクトのテストされていない部分を特定するのに役立ちます。
$ flow test --cover
Sample output:
Test results:
- PASS: test_script_test.cdc > testSumOfTwo
Coverage: 96.5% of statements
Coverage Report Output File
- Flag:
--coverprofile
- Valid Inputs: A valid filename with extension
.json
or.lcov
- Default:
"coverage.json"
--coverprofile
フラグを使用して、カバレッジレポートの出力ファイルを指定します。
Example:
$ flow test --cover --coverprofile="coverage.lcov"
生成されたカバレッジファイルは検査することができます。
$ cat coverage.lcov
Coverage Code Type
- Flag:
--covercode
- Valid Inputs:
"all"
(default) or"contracts"
- Default:
"all"
--covercode
フラグを使用すると、カバレッジレポートを特定のコードのタイプに限定することができます。この値を"contracts"
に設定すると、スクリプトとトランザクションがカバレッジ分析から除外されます。
$ flow test --cover --covercode="contracts"
コントラクトが存在しない場合の出力例:
Test results:
- PASS: test_script_test.cdc > testSumOfTwo
There are no statements to cover
Note:この例では、
--covercode
フラグが"contracts"
に設定されているため、カバレッジレポートは空です。テストスクリプトはスクリプトのみを含んでおり、コントラクトが含まれていません。
Random Execution of Test Cases
- Flag:
--random
- Default:
false
--random
フラグを使用すると、テストケースをランダムな順序で実行できます。これにより、テストの依存関係やテストの実行順序によって発生する可能性のある問題を特定しやすくなります。
flow test --random
Seed for Random Execution
- Flag:
--seed
- Default:
0
--seed
フラグを使用して、テストケースのランダムな実行順序のシード値を指定します。これにより、同じシード値を使用することで特定のランダムな順序を再現できるようになり、不安定なテストのデバッグに役立ちます。
flow test --seed=12345
Note:
--random
と--seed
の両方が指定された場合、--random
フラグは無視され、--seed
のシード値がランダム化に使用されます。
Run Specific Test by Name
- Flag:
--name
- Default:
""
(empty string)
--name
フラグを使用すると、指定した名前に一致するテストのみを実行できます。これは、テストスクリプト内で特定のテスト関数を実行したい場合に便利です。
flow test --name=testSumOfTwo
このコマンドは、testSumOfTwo
という名前のテスト関数だけを、それを含むすべてのテストスクリプトで実行します。
あなたのCadenceスクリプトとスマートコントラクトの機能テストをさらに詳しく行うには、Cadence Testing Frameworkのドキュメントを参照してください。
Last updated on Dec 6, 2024 by Alex Ni
翻訳元
Previous << Dependency Manager
Flow BlockchainのCadence version1.0ドキュメント (Running Cadence Tests)