gpt4 book ai didi

unit-testing - 如何在单元测试中以编程方式设置target_os?

转载 作者:行者123 更新时间:2023-12-03 11:47:51 25 4
gpt4 key购买 nike

我尝试了以下方法:

fn get_system_extension(&self) -> String {
if cfg!(target_os = "windows") {
String::from(".lib")
} else {
String::new()
}
}

mod test {
#[allow(unused_imports)]
use super::*;

use std::env;

#[test]
fn get_system_extension_one() -> Result<(), CcrustyError> {
env::set_var("CARGO_BUILD_TARGET", "linux");

let result = get_system_extension();

assert_eq!(String::new(), result);

Ok(())
}

#[test]
fn get_system_extension_two() -> Result<(), CcrustyError> {
env::set_var("CARGO_CFG_UNIX", "");

let result = get_system_extension();

assert_eq!(String::new(), result);

Ok(())
}
}
根据 the documentation可以在文件中设置这些,但是我不知道如何将它们动态链接到测试。

最佳答案

您是否正在寻找类似的东西:

#[test]
fn currect_system_extension() -> Result<(), CcrustyError> {
let system = env::var_os("CARGO_BUILD_TARGET");
let result = get_system_extension();

match system => {
"linux" => assert_eq!(String::new(), result),
"windows" => assert_eq!(".libs".to_string(), result),
_ => (),
}
Ok(())
}
即使这样,您也必须编译此测试的两个版本以覆盖代码。看看使用 --all-targets https://doc.rust-lang.org/cargo/commands/cargo-test.html

关于unit-testing - 如何在单元测试中以编程方式设置target_os?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63926766/

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