【问题标题】:VSTest Execute each dll individuallyVSTest 分别执行每个 dll
【发布时间】:2016-07-30 08:28:10
【问题描述】:

我想创建一个 VSTS 构建定义,我可以在其中指定 vstest.console.exe 在包含单词 test 的任何 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 的 A 和 B 依赖于相同的 dll 名称但不同的版本,这意味着 vstest.console.exe 不能同时加载 dll 并且这两种情况之一必然会失败。

有没有办法强制 vstest.console.exe 为每个 dll 单独加载?我试过 /InInsolation 但没有解决问题

我知道通过不同的 vstest.console.exe 命令分别执行每个 dll 是可行的,但在 VSTS 中实现这一点很麻烦。我还有其他选择吗?

【问题讨论】:

    标签: c# mstest azure-devops vstest


    【解决方案1】:

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

    并行测试执行

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

    并行测试执行利用机器上的可用内核, 并通过在每个上启动测试执行引擎来实现 可用核心作为一个独特的进程,并将其交给一个容器 (包含要执行的测试的程序集、DLL 或相关工件), 值得执行的测试。调度的单位是测试 容器。在每个容器内,测试将按照 测试框架的语义。如果有很多这样的 容器,然后当进程完成在一个 容器,他们将获得下一个可用的容器。

    详情请参考此链接:Parallel Test Execution

    但是,在我看来,最简单的方法是在构建定义中添加一个额外的“Visual Studio 测试”步骤。然后可以配置一个VSTest任务执行A.UnitTests.dll,另一个VSTest任务执行B.UnitTests.dll。

    【讨论】:

      猜你喜欢
      • 2019-01-07
      • 2022-12-05
      • 2022-12-20
      • 2010-12-25
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多