test
テストの記述法 - The Rust Programming Language 日本語版
Rustには簡単なテストフレームワークが組み込まれている。
テストはマルチスレッドで並列実行される。これはcarto test -- --test-threads 1のように調整できる。
テストが失敗した結果のみ出力されるので、成功結果も出力したければcargo test -- --no-captureとする。
Unit test
ユニットテスト - Rust By Example 日本語版
assersionする
テストは#[test]属性が付与された通常の関数である。 下記を利用する。
上記は非テストでも利用できる。つまりリリースビルドにも入ってしまう。 デバッグビルド時のみ有効にしたければ下記を利用する。
もっといえば、テスト時のみ実行するように#[cfg]属性で設定するのが慣習となっている。
panicする
エラーが起こる場合を正常としたテストをしたいなら、#[should_panic]属性を利用する。 パニックが起こることが自明な静的コードの場合、#[allow]属性でコンパイラへ指示する。
Integration test
インテグレーションテスト - Rust By Example 日本語版
Cargoはsrc/と同じ階層のtests/配下を統合テストとして扱う。
クレートを外部のユーザの世界から見る。つまりクレートの公開APIをテストすることがポイント。
cargo test: 単体テスト、統合テストを実行する
cargo test --test foo: tests/foo.rsに書かれた統合テストを実行する