vstest.console.exe工作,但没有一个好的文件名,CodeCoverage.exe不会给出任何结果

gra*_*der 7 mstest code-coverage visual-studio visual-studio-2015

我有以下设置:

set __vsTestConsoleExe=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
set __codeCoverageExe=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe

set __testFile=My.UnitTests.dll

REM Below I get a ".coverage" file with the correct coverage.  But the file name is kinda-random
"%__vsTestConsoleExe%" "%__testFile%" /InIsolation /EnableCodeCoverage

PAUSE

REM  Below I get a big ole nothing
"%__codeCoverageExe%" collect /output:DynamicCodeCoverage.coverage "%__vsTestConsoleExe%" "%__testFile%" /InIsolation /EnableCodeCoverage 
"%__codeCoverageExe%" analyze /output:DynamicCodeCoverage.coveragexml DynamicCodeCoverage.coverage
Run Code Online (Sandbox Code Playgroud)

当以下行运行时:

"%__vsTestConsoleExe%" "%__testFile%" /InIsolation /EnableCodeCoverage
Run Code Online (Sandbox Code Playgroud)

我得到一个很好的.coverage文件,但它生成的文件名如下:

MyUSERNAME_MYMACHINE 2016-03-24 16_03_20.coverage
Run Code Online (Sandbox Code Playgroud)

PAUSE语句之后的行(在第一个代码块中)看起来应该收集覆盖范围(注意,我给它的相同''%__ vsTestConsoleExe%''comamand .......但是我变大了什么都没有.

我究竟做错了什么?

gra*_*der 0

我始终无法让 vstest.console.exe 工作。

我能够使用 MsTest.exe 获得“可预测”文件名并获取 .coverage 文件中的信息。

set __msTestExe=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe
set __codeCoverageExe=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe



REM the below calls will create the binary *.coverage files
"%__codeCoverageExe%" collect /output:"D:\BuildStuff\TestResults\AAA_DynamicCodeCoverage.coverage" "%__msTestExe%" /testcontainer:"D:\BuildStuff\BuildResults\My.UnitTests.One.dll" /resultsfile:"D:\BuildStuff\TestResults\My.UnitTests.One.trx"
"%__codeCoverageExe%" collect /output:"D:\BuildStuff\TestResults\BBB_DynamicCodeCoverage.coverage" "%__msTestExe%" /testcontainer:"D:\BuildStuff\BuildResults\My.UnitTests.Two.dll" /resultsfile:"D:\BuildStuff\TestResults\My.UnitTests.Two.trx"
"%__codeCoverageExe%" collect /output:"D:\BuildStuff\TestResults\CCC_DynamicCodeCoverage.coverage" "%__msTestExe%" /testcontainer:"D:\BuildStuff\BuildResults\My.UnitTests.Three.dll" /resultsfile:"D:\BuildStuff\TestResults\My.UnitTests.Three.trx"
Run Code Online (Sandbox Code Playgroud)

您还可以将 3 个 UnitTests.dll 合并到一个调用中

REM the below calls will create the binary *.coverage file
"%__codeCoverageExe%" collect /output:"D:\BuildStuff\TestResults\ZZZ_DynamicCodeCoverage.coverage" "%__msTestExe%" /testcontainer:"D:\BuildStuff\BuildResults\My.UnitTests.One.dll" /testcontainer:"D:\BuildStuff\BuildResults\My.UnitTests.Two.dll" /testcontainer:"D:\BuildStuff\BuildResults\My.UnitTests.Three.dll" /resultsfile:"D:\BuildStuff\TestResults\My.UnitTests.AllOfThem.trx"
Run Code Online (Sandbox Code Playgroud)

ZZZ_DynamicCodeCoverage.coverage 的命名是“可预测的”,并且在 .coverage 文件中具有实际值。

不知道为什么 CodeCoverage.exe 创建的 .coverage 文件..在其参数列表中带有 vstest.console.exe.... 不起作用。:( 再次,不起作用等于。“创建 .coverage 文件,但打开它,其中没有信息”。