- 前の記事: Master mind in Rust; part 4 argument parser - Sabrou-mal サブロウ丸
- 次の記事: Master mind in Rust; part 6 ファイル分割とモジュール - Sabrou-mal サブロウ丸
今回やること
- 単体テストを書く
単体テスト
単体テストとは、プログラムの一部分を単独でテストすることです。 Rustではその関数を定義しているファイルに単体テストを書くことが多いようですね。
テストの書き方は2通りあって
- 関数に
#[test]
属性をつける #[cfg(test)]
属性をつけたモジュールを作る
この#[...]のアウターアトリビュート(Outer Attributes)と呼ばれるもので、今回の#[test]はとくにユニットテスト用の関数を明示するものです。 (参考: Rust文法 - アトリビュート(#[...], #![...]))
関数に#[test]
属性をつける
fn add(a: i32, b: i32) -> i32 { a + b } #[test] fn test_add() { assert_eq!(add(1, 2), 3); }
これだけ。#[test]
をつけた関数はテスト時のみコンパイルされます。
#[cfg(test)]
属性をつけたモジュールを作る
fn add(a: i32, b: i32) -> i32 { a + b } #[cfg(test)] mod tests { use super::*; #[test] fn test_add() { assert_eq!(add(1, 2), 3); } }
mod { } で囲んだ部分はモジュールと呼ばれる名前空間です。#[cfg(test)]
属性をつけることで、テスト時のみコンパイルされるようになります。
コード
参考
- https://qiita.com/masakuni-ito/items/10603050c7a06f329da2#commandauthor
- Rust文法 - アトリビュート(#[...], #![...])