我在 VS 的“SpecFlowTests”项目中有一些 SpecFlow 测试要运行,它们需要一些测试数据文件。我正在使用 .testsettings 文件来部署文件并且它有效。但是,新的 MsTest 代理不再支持 .testsettings 所以我需要找到另一个解决方案来部署文件。
测试数据文件的“复制到输出目录”设置为“始终复制”。它们被复制到输出目录中,我可以通过以下方式获取输出目录在代码中引用它们:
public static string AssemblyLocation()
{
var assembly = Assembly.GetExecutingAssembly();
var codebase = new Uri(assembly.CodeBase);
var path = codebase.LocalPath;
return path;
}
这种方法在本地运行测试或将它们作为 TFS 构建的一部分运行时有效,它会在以下位置查找文件:
...\SpecFlowTests\bin\Debug\Helpers\TestDataFile.txt
但是,当尝试在 TFS 中将它们作为发行版的一部分运行时,它会在 TestResults 目录的 Out 文件夹中查找测试数据文件,但在那里找不到它们。
C:\buildagent1\_work\r1\a\TestResults\Out\Helpers\TestDataFile.txt
然后我尝试在测试中的 BeforeFeature 方法上设置一个 DeploymentItem 属性,但它看起来不起作用,它应该将测试数据文件部署到 TestResults 中的 Out 文件夹,但它没有。
所以我需要一个通用的解决方案来处理所有三种情况(在本地运行测试,从 TFS 构建运行它们,从 TFS 版本运行它们)。
我在这方面相对较新,所以任何建议都值得赞赏。
谢谢!