このチャプターの目次
📌 ユニットテスト
Rust にはテストコードを記述する機能が用意されています.テストを実行するにはcargo test
コマンドを実行します:
cargo test
実行するユニットテストの関数にはtest
属性を付けます:
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
テスト時のみ(cargo test
)ビルドするモジュールを作れます.それにはモジュールの前に cfg(test)
属性を付けます.
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
🔹 assertions
テストに便利なマクロがいくつか用意されています. assert!
マクロは引数が true
かどうかをテストします.また, ==
や !=
演算子を使う代わりに assert_eq!
マクロ, assert_ne!
マクロが用意されています.
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert!(2 == 2);
assert_eq!(2 + 2, 4);
assert_ne!(2 + 2, 5);
}
}
assert_eq!マクロやassert_ne!マクロは、失敗したときに実際にどの値かを出力してくれますが、assert!マクロの場合はそれがないので、可能ならassert_eq!マクロやassert_ne!マクロを使いましょう.
🔹 should_panic属性
assert!
マクロや, unwrap
メソッドなどはpanic!
マクロを呼び出す場合があります.場合によってはpanic!
マクロが呼び出されることを期待したテストコードを記述したい場合があります.しかし,テストは通常panic!
マクロを起こすと失敗になります.そこで,should_panic
属性を付けることで, panic!
マクロを起こすことがテストの目的であることを明示します:
#[test]
#[should_panic]
fn it_works() {
panic!();
}