Ruust/Cargo内置了很好的构建和测试功能,您可以使用cargo build
、cargo build --release
、cargo run
和cargo test
来区分构建和运行代码的方式.
假设我有一个想要在单元测试中调用的函数foo()
.我想包括一些调试输出,这样如果测试失败,我就可以得到一些有用的输出.然而,如果我使用cargo build
/cargo run
进行调试构建或使用cargo build --release
进行发布构建,我不希望输出出现(或者理想情况下会有任何运行时影响).我只希望在cargo test
测试失败的情况下显示此输出.
函数foo()
对于单元测试是不透明的,因此我不仅希望在单元测试代码中输出打印语句,我还希望检测函数foo()
本身.例如,在C中,您可以使用编译器#ifdef
执行此操作,并多次构建程序以进行单元测试、调试和发布.我希望能有一个更简单的东西,比如一个自动的testprint!()
宏,它的工作原理就像print!()
正常一样.
有办法做到这一点吗?