Unit testing 如何在单元测试中以编程方式设置目标操作系统?

Unit testing 如何在单元测试中以编程方式设置目标操作系统?,unit-testing,rust,tdd,Unit Testing,Rust,Tdd,我尝试了以下方法: fn获取系统扩展名(&self)->字符串{ 如果是cfg!(target_os=“windows”){ 字符串::from(“.lib”) }否则{ 字符串::new() } } 模试验{ #[允许(未使用的_导入)] 使用超级::*; 使用std::env; #[测试] fn获取系统扩展名()->结果{ 环境:set_var(“货物、构建、目标”、“linux”); 让result=get_system_extension(); 断言(字符串::new(),结果); 好(

我尝试了以下方法:

fn获取系统扩展名(&self)->字符串{
如果是cfg!(target_os=“windows”){
字符串::from(“.lib”)
}否则{
字符串::new()
}
}
模试验{
#[允许(未使用的_导入)]
使用超级::*;
使用std::env;
#[测试]
fn获取系统扩展名()->结果{
环境:set_var(“货物、构建、目标”、“linux”);
让result=get_system_extension();
断言(字符串::new(),结果);
好(())
}
#[测试]
fn get_system_extension_two()->结果{
环境::set_var(“CARGO_CFG_UNIX)”;
让result=get_system_extension();
断言(字符串::new(),结果);
好(())
}
}

据我所知,这些可以在文件中设置,但我不知道如何将它们动态链接到测试。

您是否在寻找类似以下内容的内容:

#[测试]
fn currect\u system\u extension()->结果{
让system=env::var_os(“货物构建目标”);
让result=get_system_extension();
匹配系统=>{
“linux”=>assert_eq!(字符串::new(),结果),
“windows”=>assert_eq!(“.libs.”to_string(),result),
_ => (),
}
好(())
}
即使这样,您也必须为此测试编译两个版本,以涵盖代码。看看如何使用
——所有目标


这没有任何意义。你想针对一个不是你正在编译的操作系统?事实上,是和否。我想在我的测试中测试这两个目标,而不必更改操作系统,这个问题本身可能不清楚。不,这很清楚。我不明白的是,你想如何在两个不同的操作系统上测试特定于操作系统的代码,而只在一个操作系统上构建和运行你的代码