如何测试子子目录中的代码?

时间:2016-06-04 04:27:01

标签: unit-testing rust

在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);
    }
}

2 个答案:

答案 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);
    }
}