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