【问题标题】:Executing SpecFlow tests in VSTS Release phase using SpecRun使用 SpecRun 在 VSTS 发布阶段执行 SpecFlow 测试
【发布时间】:2018-09-30 22:26:07
【问题描述】:
我们已经使用 SpecFlow 构建了许多测试,并且正在使用 SpecRun 在本地和构建代理上运行测试。我们希望将测试从构建中取出,并将它们保留在我们已链接到构建的 VSTS 版本的第一个发布阶段。
团队按照the guidance from Tarun and Utkarsh 在构建中设置 SpecRun,但是当我们使用 Publish Artefact 任务打包所有测试程序集时,在 Release Agent 上运行时找不到它们。
【问题讨论】:
标签:
azure-devops
specflow
azure-pipelines
azure-pipelines-release-pipeline
【解决方案1】:
在构建代理上构建项目时,解决方案的 NuGet 引用将恢复到 packages 文件夹,这包括 SpecRun.Runner 包,其中包含用于发现和运行测试的 Visual Studio 测试适配器。
此测试运行程序包不会复制到测试项目的输出目录。构建中的 VsTest 任务会自动从包目录中检测测试运行器,这就是它在构建阶段像魔术一样工作的原因。
为了让它在 Release 中工作,我们找到了几个选项:
ugly 使用发布工件选项并发布解决方案包文件夹。在发布阶段,将 VsTest 步骤指向另一个工件位置以找到测试适配器:
更好在发布阶段使用 nuget 安装 SpecRun.Runner nuget。这存在构建下载 SpecRun.Runner 包的更新或意外版本的风险。
best 签入单独的 packages.config 并引用 SpecRun.Runner 项目及其依赖项,在构建期间将其恢复并将其作为单独的工件附加到构建中。这确保了发布阶段将能够使用相同版本的 SpecRun.Runner,并且该版本存储在源代码管理中。