2016-04-08 30 views
0

我想创建一个VSTS构建定义,我可以指定vstest.console.exe在包含单词测试的任何dll上执行。这个定义是:VSTest单独执行每个dll

**\*test*.dll;-:**\obj\** 

此执行命令像我的仓库如下:

2016-04-08T20:38:41.4966824Z Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe 
"E:\A\_work\33\s\A\UnitTests\bin\Release\A.UnitTests.dll" 
"E:\A\_work\33\s\A\bin\Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" 
"E:\A\_work\33\s\B\UnitTests\bin\Release\B.UnitTests.dll" 
"E:\A\_work\33\s\B\UnitTests\bin\Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" 
/logger:trx 

我遇到的问题是,DLL的一个&乙双方在同一个DLL名称依赖但版本不同,这意味着vstest.console.exe不能同时加载dll,并且这两种情况之一必然会失败。

有没有办法强制vstest.console.exe为每个DLL分别加载?我试过/ InInsolation但它没有解决问题

我知道,通过不同的vstest.console.exe命令单独执行每个dll都可以,但在VSTS中实现起来很麻烦。我有其他选择吗?

回答

1

您可以尝试使用“并行运行”功能。检查“Visual Studio Test”步骤中的“Run in Parallel”选项,或使用测试设置文件启用它。

并行测试执行

在Visual Studio测试平台引入了支持的测试用例并行执行 。

并行测试执行利用了可用核的机器上, 并且通过启动每个 可用的核心作为一个独特的过程中的测试执行引擎,并交给它的容器 (组件,DLL实现,或包含相关伪影要执行的测试), 值得执行的测试。调度单位是容器的测试 。在每个容器中,测试将按照测试框架的语义按照 执行。如果有许多这样的容器,那么随着过程在一个容器内完成执行测试,它们被交给下一个可用的容器。

参考此链接了解详细信息:Parallel Test Execution

然而,在我看来,要做到这一点最简单的方法是增加在构建定义一个额外的“Visual Studio的测试”步骤。然后,您可以配置一个VSTest任务来执行A.UnitTests.dll和另一个VSTest任务来执行B.UnitTests.dll。