2016-04-29 16 views
7

Ich habe folgendes Setup:vstest.console.exe funktioniert, aber nicht mit einem guten Dateinamen, wird CodeCoverage.exe keine Ergebnisse geben

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 

, wenn die unter der Linie läuft:

"%__vsTestConsoleExe%" "%__testFile%" /InIsolation /EnableCodeCoverage 

ich eine gute .coverage Datei, aber es ist ein generierten Dateinamen wie:

MyUSERNAME_MYMACHINE 2016-03-24 16_03_20.coverage 

die Linien nach der PAUSE-Anweisung (in dem ersten Codeblock) sieht aus, als sollten sie die Abdeckung sammeln (und beachte, ich gebe es gleich '"% __ vsTestConsoleExe%"' comamand ....... aber ich bekomme groß nichts davon.

Was mache ich falsch?

Antwort

0

Ich konnte nie vstest.console.exe zu arbeiten.

Ich konnte einen "berechenbaren" Dateinamen bekommen UND Informationen in der .coverage-Datei mit MsTest.exe erhalten.

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" 

Sie können auch die 3 UnitTests.dlls in einem Aufruf kombinieren

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" 

ZZZ_DynamicCodeCoverage.coverage "vorhersagbar" genannt wird, und die tatsächlichen Werte in der .coverage Datei hat.

Keine Ahnung, warum die .coverage-Datei (en), die von CodeCoverage.exe .. mit der vstest.console.exe in seiner Argumentliste erstellt wurde .... nicht funktioniert. :( Auch hier funktioniert nicht gleich. 'Erstellt die .coverage-Datei, aber öffnet es, es hat keine Informationen drin. "