ユニットテスト

Rust と Cargo には、シンプルな単体テスト フレームワークが付属しています。

  • 単体テストはコードのあらゆる場所に記述可能です。

  • 統合テストはtests/ディレクトリ内に記述します。

テストには #[test] のマークが付きます。多くの場合、単体テストは通常ネストされたtestsモジュールに配置され、#[cfg(test)]によりテストのビルド時にのみコンパイルされるようになります。

fn first_word(text: &str) -> &str {
    match text.find(' ') {
        Some(idx) => &text[..idx],
        None => &text,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_empty() {
        assert_eq!(first_word(""), "");
    }

    #[test]
    fn test_single_word() {
        assert_eq!(first_word("Hello"), "Hello");
    }

    #[test]
    fn test_multiple_words() {
        assert_eq!(first_word("Hello World"), "Hello");
    }
}
  • これにより、プライベート ヘルパーの単体テストを行えます。
  • #[cfg(test)] 属性が付与されたコードは cargo test の実行時にのみ有効になります。
This slide should take about 5 minutes.

結果を表示するには、プレイグラウンドでテストを実行します。