gpt4 book ai didi

unit-testing - 跳过单元测试或至少显示它们的警告

转载 作者:行者123 更新时间:2023-11-29 08:25:40 25 4
gpt4 key购买 nike

我需要测试从标准 C 库中获取和处理一些数据的代码。但是,此数据可能不会安装在任何特定系统上。因此,在每次测试开始时,我都会检测数据是否已安装并跳过测试。

将测试包装在 if 中很容易,但是由于测试测试是否可行的代码本身可能会失败,因此我至少需要知道测试被跳过了。我知道我can't simply use println!而且我不想每次测试时都必须记住通过 --nocapture(我想在 Travis 日志中看到警告;Travis 虚拟机没有所有数据)。

最佳答案

一个鲜为人知的事实是 println! 使用线程本地“标准输出”,它可以设置为其他输出类型。在测试期间,这被设置为捕获类型。但是,您仍然可以直接访问真正的标准输出并使用它:

use std::io::{self,Write};

#[test]
fn a() {
println!("Hi!"); // Will be captured / hidden by default
write!(&mut io::stdout(), "Hello!").unwrap(); // Will be shown
}

输出如下:

running 1 test
Hello!test a ... ok

关于unit-testing - 跳过单元测试或至少显示它们的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29241148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com