Ruust/Cargo内置了很好的构建和测试功能,您可以使用cargo buildcargo build --releasecargo runcargo test来区分构建和运行代码的方式.

假设我有一个想要在单元测试中调用的函数foo().我想包括一些调试输出,这样如果测试失败,我就可以得到一些有用的输出.然而,如果我使用cargo build/cargo run进行调试构建或使用cargo build --release进行发布构建,我不希望输出出现(或者理想情况下会有任何运行时影响).我只希望在cargo test测试失败的情况下显示此输出.

函数foo()对于单元测试是不透明的,因此我不仅希望在单元测试代码中输出打印语句,我还希望检测函数foo()本身.例如,在C中,您可以使用编译器#ifdef执行此操作,并多次构建程序以进行单元测试、调试和发布.我希望能有一个更简单的东西,比如一个自动的testprint!()宏,它的工作原理就像print!()正常一样.

有办法做到这一点吗?

Rust相关问答推荐

在‘await’点上使用‘std::同步::Mutex’是否总是会导致僵局?

如何在不安全的代码中初始化枚举 struct

在Rust中,有没有一种方法让我定义两个 struct ,其中两个都遵循标准 struct ?

在自定义序列化程序中复制serde(With)的行为

当发送方分配给静态时,Tokio MPSC关闭通道

我如何使用AWS SDK for Rust获取我承担的角色的凭据?

允许 rust 迹 struct 条目具有多种类型

在Rust内联程序集中使用字符串常量

为什么我必须使用 PhantomData?在这种情况下它在做什么?

详尽的匹配模式绑定

可以在旋转循环中调用try_recv()吗?

在Rust中实现Trie数据 struct 的更好方式

如何保存指向持有引用数据的指针?

Sized问题的动态调度迭代器Rust

如何使用 Rust Governor 为每 10 秒 10 个请求创建一个 RateLimiter?

Some(v) 和 Some(&v) 有什么区别?

返回迭代器的特征

为什么 for_each 在释放模式(cargo run -r)下比 for 循环快得多?

Rust 跨同一文件夹中文件的可见性

TinyVec 如何与 Vec 大小相同?