サブロウ丸

Sabrou-mal サブロウ丸

主にプログラミングと数学

Master mind in Rust; part 5 単体テスト

今回やること

単体テスト

単体テストとは、プログラムの一部分を単独でテストすることです。 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)]属性をつけることで、テスト時のみコンパイルされるようになります。

コード

参考

関連