day 44 @rust cargo test option

テストは複数スレットで並列して行われるので並列実行で問題が起きる処理は適さない。
例えばtest.txtというファイルを読み書きするテストがあるとか。
もし単一スレッドでテストを行いたい時には -- --test-thread=1を指定する。

特定のテストだけ走らせる

引数に関数名を使う。

また上記に関しては完全一致ではなく含まれているものをテストする。
つまりsample_test_a()とsample_test_bがあった時
cargo test sample_test
とすればa,b2つとも実行される。

テストを一時的に無視する。
#[ignore]属性を付与する。

また無視しているものだけをテストしたいなら
cargo test -- --ignored
とする。

テストでは標準出力の内容は表示されないのでそうするためには、
cargo test -show-outputとする

day 43 @rust テスト2

・テスト用の関数
assert!(v);
assert_eq!(a,b);
assert_ne!(a, b);

アサーションメッセージのカスタム
assert!(v,
"custom sample{} {}"
true, 32);

・パニックが起こるかのテスト
should_panic属性を使う。
#[test]
#[should_panic]
fn sample() {}

・特定のパニックのみテストを通過するようにする。
#[should_panic(expected="panic")]

・Result型のテストをする。
戻り値をResult型にすればよい。
#[test]
fn test_func() -> Result<(), String> {
// some test.
}