その他の種類のテスト

統合テスト

ライブラリをクライアントとしてテストしたい場合は、統合テストを使用します。

tests/ の下に .rs ファイルを作成します:

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

// tests/my_library.rs
use my_library::init;

#[test]
fn test_init() {
    assert!(init().is_ok());
}

これらのテストからアクセスできるのは、クレートの公開 API のみです。

ドキュメントテスト

Rust にはドキュメントテストのサポートが組み込まれています:

#![allow(unused)]
fn main() {
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

/// 指定された長さに文字列を短縮します。
///
/// ```
/// # use playground::shorten_string;
/// assert_eq!(shorten_string("Hello World", 5), "Hello");
/// assert_eq!(shorten_string("Hello World", 20), "Hello World");
/// ```
pub fn shorten_string(s: &str, length: usize) -> &str {
    &s[..std::cmp::min(length, s.len())]
}
}
  • /// コメント内のコードブロックは、自動的に Rust コードとして扱われます。
  • そのコードは cargo test の一部としてコンパイルおよび実行されます。
  • コード内に # を追加すると、ドキュメントでは非表示になりますが、 それでもコンパイルおよび実行されます。
  • 上記のコードは Rust Playground で試してください。