импортирует и использует lib.rs
src/lib.rs <- в конце файла:
#[cfg(test)]
#[path="./lib_unittest.rs"]
mod lib_unittest;
src/lib_unittest.rs <- здесь тесты
Когда я запускаю cargo test то unittest делается два раза (исполняет каждый тест по два раза), при чем как я понимаю, один раз для main.rs, и один раз для lib.rs. Как это исправить, или как вообще правильно организовать unit+integration тестирование?
так если сделаешь директорию tests то он будет все файлы от туда запускать по команде cargo test
это интеграционные
да, понимаю, но там вроде бы должны лежать имення integration
да ))
А как импортирует? Можно милнимальный пример?
// main.rs: pub mod lib; use lib::*; fn main() {...} // lib.rs: pub fn eval(input: &str) -> String { "2".to_string() } #[cfg(test)] #[path="./lib_unittest.rs"] mod lib_unittest; // lib_unittest.rs: use crate::*; #[test] pub fn unittest_add_numbers() { assert_eq!("2".to_string(), eval("1+1")); }
Тип крейта наверн надо указать
где и как?
cargo test --bin something
но так itegration тесты не запускаются(
о, нашел решение: cargo test --test '*' взято отсюда: https://github.com/rust-lang/cargo/issues/8396
Но тогда юниты не пускаются :D
Обсуждают сегодня