Интеграционные и прочие тесты
Интеграционные тесты
Если вы хотите протестировать библиотеку как клиент, используйте интеграционный тест.
Создайте файл .rs в каталоге tests/:
// 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.