我在Visual Studio Team Services中添加了一个发布定义,以将应用程序部署到Azure云服务。我成功部署后尝试运行一些集成测试:
但不幸的是,测试没有运行:
Warning: No test is available in C:\a\301532a74\Build\Api.Web.IntegrationTests\Api.Web.IntegrationTests.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.
Information: Additionally, you can try specifying '/UseVsixExtensions' command if the test discoverer & executor is installed on the machine as vsix extensions and your installation supports vsix extensions. Example: vstest.console.exe myTests.dll /UseVsixExtensions:true
##[warning]No results found to publish.
我为所有包含测试的项目(单元测试和集成测试)安装了NUnit测试适配器(nuget包)。奇怪的是,我能够将测试作为构建的一部分运行,但不能作为发布的一部分。
我还尝试设置自定义测试适配器的路径,但它似乎没有什么区别。
我在这里缺少什么?有没有更好的方法来运行某些集成测试作为发布的一部分?
答案 0 :(得分:3)
这通常是由VSTest无法找到NUnit测试适配器引起的。
通常,在“Build”环境中,Nudeit测试适配器由nuget在工作文件夹中恢复,因此VSTest可以在测试期间找到它。但在“Release”环境中,默认情况下NUnit测试适配器不存在。因此,您需要更新构建定义以将NUnit测试适配器文件上载到“drop”,并且在下载工件后,NUnit测试适配器将在“Release”环境中可用。然后,您可以将“自定义测试适配器的路径”设置为“$(System.DefaultWorkingDirectory)\”,然后重试。
如果您使用自己的构建代理,还可以将NUnit测试适配器放在构建代理可以访问的永久路径中,并为其设置“自定义测试适配器的路径”。或者在构建代理上为VS安装NUnit测试适配器扩展,并在“Visual Studio Test \ Other console options”中输入“/ UseVsixExtensions:true”。
答案 1 :(得分:3)
根据Eddie的建议,我找到了解决问题的方法:
步骤1 - 将所有NUnit程序集复制到测试项目的输出文件夹(将复制本地属性设置为 True )
步骤2 - 创建一个工件,该工件将包含测试项目的bin文件夹的所有文件。这不仅包含测试程序集,还包含NUnit程序集
步骤3 - 在测试任务中,将自定义测试适配器的路径设置为包含测试程序集和NUnit适配器程序集的artifacts文件夹
那就是它!下次创建发布并部署到任何环境时,将执行测试。
答案 2 :(得分:0)
我的问题是我根本没有安装NUnit的测试人员,因为我使用的是resharpers testrunner。
因此,我的解决方案就像将nuget包“NUnit3TestAdapter”version =“3.4.0”添加到我的测试项目一样简单。
在visualstudio.com(VS online)中“自动搜索Nuget恢复的适配器。”并且您不需要/不应指定“自定义测试适配器”的路径 - 我不知道这是否也适用于NUnit测试适配器版本2.