How to test a Gear program
Gear uses the standard testing mechanism for Rust programs: build and run testing executables using
Following basic concepts and testing methods described in Rustbook, you can organize tests in two main categories: unit tests and integration tests.
The unit tests enable testing of each unit of code in isolation from the rest of the code. It helps to quickly find where the code works as expected and where it does not. One should place unit tests in the
src directory in each file with the code they test.
Even when code units work correctly, it is crucial to test if several library parts work together correctly. For integration tests, a separate
tests directory is required at the top level of your project directory, next to
src. You can make as many test files in this directory as you need.
cargo will compile each file as an individual crate.
How to test a program
There are at least two ways how to test and debug Gear programs.
The first is the off-chain testing using a low-level
gtest crate. This approach is recommended for unit and integration tests.
The second is the on-chain testing with a higher level
gclient crate. It perfectly fits the needs of end-to-end testing.
gclient is aimed at end-to-end testing, tests can be written as unit or integration tests in terms of Rust. We recommend using the integration-like approach with separate test files in the
tests directory when using the
Building a program in test mode
First, be sure you have a compiled Wasm file of the program you want to test. You can refer to Getting Started for additional details.
Usually, the following command is used for the regular compilation of Gear smart contracts:
cargo build --release
The nightly compiler is required if some unstable features have been used:
cargo +nightly build --release
The minimal command for running tests is:
The nightly compiler is required if your contract uses unstable Rust features, and the compiler will ask you to enable
cargo +nightly test
Build tests in release mode, so they run faster:
cargo test --release
In the following two sections, we will describe how to test the Gear program using both