在Rust中,如何使用cargo test
命令测试子子目录中的代码?
program
`─ src
| `─ main.rs
`─ tests
`─ foo
`─ foo.rs
main.rs:
fn main() {
}
foo.rs:
mod test_foo {
#[test]
fn test_foo() {
assert!(true);
}
}
答案 0 :(得分:2)
一种方法是使用以下内容创建tests/tests.rs
:
mod foo {
mod foo; // this will include `tests/foo/foo.rs`
}
如果您在此之后运行cargo test
,它将运行test_foo
测试功能:
$ cargo test
Running target/debug/tests-0b79a5e208e85ac6
running 1 test
test foo::foo::test_foo::test_foo ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
答案 1 :(得分:1)
您也可以使用 #[path = "foo/foo.rs"]
,如下所示:
源布局:
.
├── Cargo.toml
├── src/
└── tests/
├── tests.rs
└── foo/
└── foo.rs
tests/tests.rs:
#[path = "foo/foo.rs"]
mod foo;
tests/foo/foo.rs:
mod test_foo {
#[test]
fn test_foo() {
assert!(true);
}
}