単体テスト

Rust と Cargo には、シンプルな単体テストフレームワークが付属しています。テストには #[test] を付けます。単体テストは、ネストされた tests モジュールに置かれることが多く、 #[cfg(test)] を使って、テストをビルドするときにだけ条件付きでコンパイルされるようにします。

// 著作権 2022 Google LLC
// SPDX-License-Identifier: Apache-2.0

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 を実行したときにのみ有効になります。