0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Running Cadence Tests

Last updated at Posted at 2024-12-13

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スクリプトの機能を検証するものです。

test_script_test.cdc
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)

Next >> Cadence Linter

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?