Run Cadence tests
The Flow CLI provides a command to run Cadence tests.
_10flow test /path/to/test_script.cdc
⚠️ The test command expects configuration to be initialized. See flow init command.
Example Usage
A simple Cadence script test_script.cdc, which has a test case for running a cadence script on-chain:
_15import Test_15_15pub let blockchain = Test.newEmulatorBlockchain()_15_15pub fun testSumOfTwo() {_15    let scriptResult = blockchain.executeScript(_15        "pub fun main(a: Int, b: Int): Int { return a + b }",_15        [2, 3]_15    )_15_15    Test.expect(scriptResult, Test.beSucceeded())_15_15    let sum = scriptResult.returnValue! as! Int_15    Test.assertEqual(5, sum)_15}
The above test-script can be run with the CLI as follows, and the test results will be printed on the console.
_10$ flow test test_script.cdc_10_10Test results: "test_script.cdc"_10- PASS: testSumOfTwo
To learn more about writing tests in Cadence, take a look at the Cadence testing framework.
Flags
Coverage
- Flag: --cover
- Default: false
Use the cover flag to calculate coverage report for the code being tested.
_10$ flow test --cover test_script.cdc_10_10Test results: "test_script.cdc"_10- PASS: testSumOfTwo_10Coverage: 96.5% of statements
Coverage Report File
- Flag: --coverprofile
- Valid inputs: valid filename and extension
- Default: "coverage.json"
Use the coverprofile to specify the filename where the calculated coverage report is to be written. Supported filename extensions are .json and .lcov.
_10$ flow test --cover test_script.cdc_10_10$ cat coverage.json_10_10$ flow test --cover --coverprofile="coverage.lcov" test_script.cdc_10_10$ cat coverage.lcov
Coverage Code Type
- Flag: --covercode
- Valid inputs: "all","contracts"
- Default: "all"
Use the covercode flag to calculate coverage report only for certain types of code. A value of "contracts" will exclude scripts and transactions from the coverage report.
_10$ flow test --cover --covercode="contracts" test_script.cdc_10_10Test results: "tests/test_script.cdc"_10- PASS: testSumOfTwo_10There are no statements to cover
Since we did not use any contracts in our sample test script, there is no coverage percentage to be reported.