スマートコントラクトの開発者にとって、コントラクトのテストの作成は非常に重要なスキルです。厳密な監査のように徹底する必要はないかもしれませんが、テストはすべての機能をカバーする必要があります。通常、カバレッジを確認するためにコードカバレッジが必要です。
ここでは、VS Code のCoverage Guttersというプラグインをおすすめします。このプラグインは、生成されたコードカバレッジレポートファイルに基づいて、テストでカバーされている / されていないコードを行の前に表示し、テストの作成を効率化します。
デモ#
筆者はFoundryを使用してスマートコントラクトプロジェクトを作成し、コントラクトのテストを行っています。
mkdir demo && cd demo
forge init
プロジェクトの初期化後、ディレクトリ構造は以下のようになります:
.
├── README.md
├── foundry.toml
├── lib
│ └── forge-std
├── script
│ └── Counter.s.sol
├── src
│ └── Counter.sol
└── test
└── Counter.t.sol
6 directories, 5 files
Counter.sol とそれに対応する Counter.t.sol のテストファイルが自動的に生成されます。
Coverage Gutters を VS Code のプラグインマーケットでインストールしてください。
Foundry を使用して Code Coverage Report を生成します。
forge coverage --report lcov
すると、lcov.info というファイルが生成されます。
src/Counter.sol ファイルにウィンドウを移動し、下部のウォッチをクリックします。
テストでカバーされているコード行の前に緑色のマーカーが表示され、下部にはカバレッジ率が表示されます。
test/Counter.t.sol に関数を追加します。
function decrease() public {
number--;
}
Code Coverage Report を更新します。
forge coverage --report lcov
追加された未テストの関数の前に赤色のマーカーが表示され、下部のカバレッジ率が 67% になります。