使用SpecRun在VSTS发布阶段执行SpecFlow测试

时间:2018-04-20 08:46:34

标签: azure-devops specflow azure-pipelines azure-pipelines-release-pipeline

我们使用SpecFlow构建了许多测试,并使用SpecRun在本地和构建代理上运行测试。我们喜欢从构建中取出测试并将它们粘贴在我们已连接到构建的VSTS版本的第一个发布阶段。

团队遵循the guidance from Tarun and Utkarsh在构建中设置SpecRun,但是当我们使用Publish Artefact任务打包所有测试程序集时,在Release Agent上运行时找不到它们。

1 个答案:

答案 0 :(得分:2)

在构建代理上构建项目时,解决方案的NuGet引用将还原到packages文件夹,其中包含SpecRun.Runner包,其中包含用于发现和运行测试的Visual Studio测试适配器。

此测试运行器包未复制到Test Project的输出目录中。构建中的VsTest任务将自动从packages目录中检测测试运行器,这就是为什么它在构建阶段就像魔术一样。

为了让它在发布中发挥作用,我们找到了一些选择:

  1. 丑陋使用publish artefact选项并发布解决方案包文件夹。在发布阶段,将VsTest步骤指向另一个artefact位置以找到测试适配器: enter image description here

  2. 更好使用nuget安装SpecRun.Runner nuget作为发布阶段的一部分。这会产生构建下载SpecRun.Runner软件包的新版本或意外版本的风险。

  3. 最佳检查单独的packages.config以及对SpecRun.Runner项目及其依赖项的引用,在构建期间将其还原并将其作为单独的人工制品附加到构建中。这可确保Release阶段能够使用相同版本的SpecRun.Runner,并且版本存储在源代码管理中。