2016-04-08 13 views
0

Ich möchte eine VSTS-Builddefinition erstellen, wo ich vstest.console.exe angeben kann, um auf jeder DLL auszuführen, die das Wort Test enthält. Diese Definition wäre:VSTest Führen Sie jede DLL einzeln aus

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

Dies führt einen Befehl wie folgt für meinen Repository:

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 

Das Problem, das ich habe, ist, dass die DLL A & B haben Abhängigkeiten von dem gleichen DLL-Namen aber verschiedene Versionen, das bedeutet, vstest.console.exe kann nicht gleichzeitig die DLL laden und einer der beiden Fälle wird zwangsläufig fehlschlagen.

Gibt es eine Möglichkeit zu zwingen, vstest.console.exe separat für jede DLL zu laden? Ich versuchte/InInsolation, aber es löste das Problem nicht

Ich weiß, dass die Ausführung jeder DLL separat über eine andere vstest.console.exe Befehl funktionieren würde, aber das ist umständlich in VSTS zu erreichen. Habe ich noch andere Möglichkeiten?

Antwort

1

Sie können es mit der Funktion "Parallel ausführen" versuchen. Aktivieren Sie die Option "Parallel ausführen" im Schritt "Visual Studio Test", oder aktivieren Sie sie mithilfe einer Testdatei.

Parallel Testausführung

Die Visual Studio Testplattform stellt die parallele Ausführung von Testfällen unterstützen.

Parallel Testausführung nutzt die verfügbaren Kerne auf der Maschine, und wird von dem Start die Testausführungsmaschine auf jeden verfügbaren Kern als eigenständigen Prozess und übergibt ihr einen Behälter (Montag, DLL, oder relevanter Artefakt enthält realisiert die auszuführenden Tests), Test durchzuführen. Die Planungseinheit ist der Test Container. Innerhalb jedes Containers werden die Tests gemäß der Semantik des Testframeworks ausgeführt. Wenn es viele solcher Container gibt, werden die Prozesse, wenn sie die Tests innerhalb eines Containers beenden, an den nächsten verfügbaren Container übergeben.

für weitere Details zu diesem Link finden: Parallel Test Execution

aber in meinem Kopf, der einfachste Weg, dies zu tun, ist ein zusätzlichen "Visual Studio Test" Schritt in Ihrer Builddefinition hinzufügen. Anschließend können Sie eine VSTest-Task zum Ausführen von A.UnitTests.dll und eine weitere VSTest-Task zum Ausführen von B.UnitTests.dll konfigurieren.