为什么有些开发人员使用mod测试进行测试?

有些人做

#[cfg(test)]
mod tests {
   //all tests here
}

虽然简单地将每个测试放在文件的末尾,例如

#[test]
fn test1() {

}

#[test]
fn test2() {

}

也可以工作,我什至可以通过货物运行单个测试。

有什么不同?为什么有些人会用第一种方式?

回答

您经常需要在测试之间共享一些代码,例如用于构建测试用例或检查结果值的宏和函数。有时您必须为您的测试导入整个板条箱。

#[cfg(test)] 条件编译属性使得有可能还没有测试时不编译代码。在一般情况下,这可以实现更快的检查和更快的编译。如果你只包含一个用于测试的 crate,你可以将它导入这些 mods 并在Cargo.toml的一部分中指定dev 依赖[dev-dependencies]项。

这是此类测试模块的示例,其中一些功能用于多个测试:wrap.rs。

只要功能测试不是微不足道的,我个人就会创建一个 mod,即使(还)没有任何共享的帮助功能:然后 test mod 在我的代码中显示为一个易于注意的测试块。

有时,您可以通过为集成测试使用“测试”目录解决方案走得更远,这使得在测试之间共享整个模块变得更容易。当您的测试不仅仅是单元测试时,这通常是最实用的解决方案(某些 crate 的测试比测试的代码多)。

阅读有关测试组织的 Rust 书以了解更多信息。


以上是为什么有些开发人员使用mod测试进行测试?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>