【问题标题】:Cargo not running tests in top-level file货物未在顶级文件中运行测试
【发布时间】:2017-12-06 00:16:36
【问题描述】:

我对 Cargo 如何找到要运行的测试感到非常困惑。

我创建了一个 Cargo 项目,它为我添加了一个 main.rs。如果我在其中添加#[test] 函数,它们会被找到并使用cargo test 运行。如果我将foo.rs 文件作为main.rs 的同级文件添加并在其中添加测试,则找不到并运行它们。

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

【问题讨论】:

    标签: unit-testing module rust rust-cargo


    【解决方案1】:

    Cargo 不会只编译恰好在您的源目录中的任何文件。为了让 Cargo 找到文件,必须在 main.rs/lib.rs 或某个子模块中将其作为模块引用。

    例如,在您的main.rs:

    mod foo;
    

    就是这样。

    【讨论】:

    • 你会习惯性地将单元测试放在他们自己的文件中,并在 prod 模式下修改它们吗?或者只是将测试放在被测事物的文件中?
    • 有没有人觉得这种行为很奇怪,还是只有我一个人?
    • @Afaq 一开始我觉得它很混乱,因为它与我习惯的语言不同。但现在对我来说似乎并不奇怪。这是一种完全合乎逻辑的方法,只是与 Java 等进行了一系列不同的权衡。
    • @PeterHall 是的,这有点令人困惑。虽然,我发现这个关于在 Rust 中组织测试的非常有趣的博客 sireliah.com/niusy/testing_in_rust
    猜你喜欢
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2018-07-12
    • 2020-06-08
    • 2014-06-21
    • 1970-01-01
    相关资源
    最近更新 更多