货物未在顶级文件中运行测试

ten*_*npn 3 unit-testing module rust rust-cargo

我对Cargo如何运行测试感到困惑.

我创建了一个Cargo项目,它main.rs为我添加了一个.如果我#[test]在那里添加函数,它们就会被找到并运行cargo test.如果我将foo.rs文件添加为兄弟main.rs并在其中添加测试,则无法找到并运行它们.

我错过了什么微妙之处?我是否必须以某种方式向Cargo讲授新文件?

Pet*_*all 6

Cargo不会只编译恰好位于源目录中的任何文件.为了让货物找到一个文件,它必须作为无论是在一个模块中引用main.rs/ lib.rs或一些子模块.

例如,在你的main.rs:

mod foo;
Run Code Online (Sandbox Code Playgroud)

而已.

  • 有没有人觉得这种行为很奇怪,还是只是我? (6认同)
  • 将测试放在与他们测试的东西相同的文件中更常见. (2认同)
  • @PeterHall 是的,这有点令人困惑。尽管如此,我发现这个关于在 Rust 中组织测试的非常有趣的博客 http://sireliah.com/niusy/testing_in_rust/ (2认同)