Проблема в том, что тестовая среда Rust неявно использует встроенную тестовую библиотеку, которая зависит от стандартной библиотеки. Это означает, что мы не можем использовать тестовый фреймворк по умолчанию для нашего #[no_std]
ядра.
Блог Филиппа Опперманна
Это мое понимание, которое вам понадобитсяпользовательские рамки. Мой ответ основан на цитируемом блоге джентльмена.
Закомментируйте или удалите тесты в каталоге tests
.
Создайте src/main.rs
с помощьюследующий код.
#![feature(custom_test_frameworks)]
#![test_runner(crate::test_runner)]
extern crate nulloc;
//pub mod bump_heap;
fn main() {}
#[cfg(test)]
fn test_runner(tests: &[&dyn Fn()]) {
println!("Running {} tests", tests.len());
for test in tests {
test();
}
}
#[test_case]
fn fails() {
assert_eq!(true, false);
}
К вашему сведению Я закомментировал pub mod bump_heap
, потому что есть ошибки компилятора.
Использовать по ночам для запуска тестов.
Если у вас не установлена ржавчина по ночам:
rustup install nightly
Запускать тесты как ночью:
rustup run nightly cargo test
Модульные и интеграционные тесты
Если вы прочитаете этот связанный блог, он подробно расскажет о том, как проводить интеграционные тесты и еще много чего. Полагаю, на данный момент вы можете просто использовать mod
в main.rs или что-то еще ради организации.
mod integration {
use super::*;
#[test_case]
fn works() {
assert!(true);
}
}
mod bump_heap_unit {
use super::bump_heap;
#[test_case]
fn works() {
assert!(true);
}
}