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エイリアスには、以下のアドレスのいずれかを使用できます。
0x00000000000000050x00000000000000060x00000000000000070x00000000000000080x00000000000000090x000000000000000A0x000000000000000B0x000000000000000C0x000000000000000D0x000000000000000E
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
.jsonor.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)