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 @go スライス範囲を指定する方法
基本(nからmまで)
slice := ary[n:m]
nから最後まで
slice := ary[n:]
最初からnまで
slice := ary[:n]
すべて
slice := ary[:]
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.
}
day 42 @rust キャスト
asを使う
let var = u8_var as i32;
day 42 @go
・スライスの作成方法。
var slice = []Type{value1, value2, value3}
day 41 @go スライス
スライス型
T
個数を描く必要がない。
生成方法
var x int = int_ary[start_idx:end_idx]