Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Интеграционные и прочие тесты

Интеграционные тесты

Если вы хотите протестировать библиотеку как клиент, используйте интеграционный тест.

Создайте файл .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.