我有一些SpecFlow测试在VS一个“SpecFlowTests”项目运行,他们需要一些测试数据文件。我正在使用.testsettings文件来部署文件,它的工作。但是,新的MsTest代理不再支持.testsettings,所以我需要找到另一个解决方案来部署这些文件。VSTest - 为SpecFlow试验测试数据文件不会部署到TestResults
测试数据文件的“复制到输出目录”设置为“一直拷贝”。它们将被复制在输出目录中,我可以通过获取输出目录按以下方式引用它们的代码:
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目录和输出文件夹它在那里找不到它们。
C:\buildagent1\_work\r1\a\TestResults\Out\Helpers\TestDataFile.txt
我已经然后试图设置在测试的BeforeFeature方法DeploymentItem属性,但它看起来像它不工作,它应测试数据文件部署到TestResults输出文件夹,但它确实不。
所以我需要一个共同的解决方案,所有三种情况在工作(运行测试本地,从TFS运行它们建立,从TFS版本运行它们)。
我在这个相对较新,所以任何建议表示赞赏。
谢谢!
您使用的是哪个版本的TFS?你是如何在发布中运行它们的?只需将构建定义设置为工件?在TFS 2017中,您可以尝试直接将Source(存储库)设置为Release中的Artifacts源代码,然后检查它是否有效。 –
TFS 2017.Yes,发布定义有两个构建定义作为工件源。构建定义包含一个环境,其中包含一个用于在代理上运行SpecFlow测试的任务。但是,当测试运行时,它会尝试查找测试数据在'C:\ buildagent1 \ _work \ r1 \ a \ TestResults \ Deploy_SerTFSBUILD 2017-09-04 20_01_06 \ Out \ Hekpers \ TestDataFile.txt'中,但没有任何部署。我尝试添加一个“Copy Files”任务在运行测试任务之前,但我不知道如何选择目标文件夹,因为在运行测试时创建了“TestResults \ Deploy_SerTFSBUILD ..”文件夹 – cristina
当我可以使用“.testsettings”文件时,我只选择了我需要部署哪些文件,并在测试运行时自动将文件部署到此“TestResults \ Deploy ... \ out”文件夹中。 – cristina