VSTest - SpecFlow测试的测试数据文件未部署到TestResults

时间:2017-08-30 10:02:19

标签: tfsbuild specflow vstest deploymentitem

我在" SpecFlowTests"中进行了一些SpecFlow测试。在VS中运行项目,他们需要一些测试数据文件。我使用.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版本运行它们)。

我相对较新,所以任何建议都表示赞赏。

谢谢!

1 个答案:

答案 0 :(得分:0)

[DeploymentItem]属性不适用于BeforeFeature方法。他们必须穿上真正的testmethod / testclass。

从SpecFlow 2.2开始,您可以在要素文件中指定deploymentitems,以获取在正确位置生成的属性。将@MsTest:DeploymentItem:Helpers\TestDataFile.txt添加到您的功能中 我们的测试套件中的示例:https://github.com/techtalk/SpecFlow/blob/master/Tests/TechTalk.SpecFlow.Specs/Features/MsTestProvider.feature