2013-07-06 9 views
7

Ich versuche, unsere Tests über cmdline auszuführen. Ich verwende VS2012, aber ich bekomme immer diese Fehlermeldung:MSTest.exe (VS2012) stürzt QTAgent32.exe

error

Wenn ich die Tests direkt in VS2010 auf der gleichen Maschine laufen fein sie laufen. Ich kann nicht VS2010 für cmdline verwenden, weil wir die falsche Lizenz haben (Assembly findet nicht funktioniert), also muss ich 2012 verwenden. Alle Windows-Updates sind vorhanden.

Hat jemand ähnliche Probleme mit MSTest/VS2012?

+0

Das ist eine ExecutionEngineException ist, ein harter Absturz in der CLR. Wird normalerweise von nicht verwaltetem Code verursacht, der den auf Müll gesammelten Heap beschädigt. Der Test ist vielleicht fehlgeschlagen. Was auch immer mysteriöse Lizenzprobleme Sie haben, wird wahrscheinlich viel einfacher zu beheben sein, als zu versuchen, diesen Absturz zu beheben. –

+0

Danke für den Hinweis. Das Seltsame ist, dass diese Tests auf einem anderen Build-Agent laufen, den ich heute eingerichtet habe. Wir haben VS2010 Prof-Lizenzen, die MSTest Cmdline-Tets mit Assembly Discovery nicht unterstützen, und unsere IT wird keine Upgrade-Lizenzen kaufen. – icywiener

+0

Es scheint, dass Update1 oder 2 von VS2012 Tests mit .NET 3.5 bricht, also eine vollständige Deinstallation und Neuinstallation ohne Updates und jetzt unsere Tests laufen wieder. – icywiener

Antwort

1

Ich hatte das gleiche Problem. Ich habe gerade Update 2 von Visual Studio entfernt 2012. Schritte:

  • Remove Update 2 von Visual Studio 2012 (via Installierte Updates anzeigen)
  • System neu starten
  • ändern Installation von Visual Studio 2012 (via Deinstallieren oder ändern, um eine Programm-> Change-> Fix)
  • System neu starten
6

Wenn Sie VS 2012 Update 2, 3 oder 4 installiert behalten möchten, können Sie die unten Abhilfe versuchen:

Führen Sie die folgenden Befehle in der Befehlszeile:

DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver.ni.dll* 
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.ExecutionCommon.ni.dll* 

Dies ist ein workaround von Microsoft Jungs zur Verfügung gestellt.

Sie müssen diesen Stapel erneut ausführen, nachdem Sie Visual Studio-Updates oder sogar Windows-Updates installiert haben.

+2

Funktioniert auch für VS 2012 Update 4. –

2

Ich folgte Yanhua der Microsoft article link und eine Abhilfe gefunden, dass ich besser gefallen hat als zufällige Dateien löschen:

Verwenden vstest.console.exe statt MSTest.exe.

Hinweis, die Argumente für vstest.console.exe sind unterschiedlich. Sie will eine durch Leerzeichen getrennte Liste von test.dll der

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "TestProject1.dll" 

Hier ist meine msbuild Setup, das die gleiche Sache tut:

<PropertyGroup> 
    <MSTEST>"$(VS110COMNTOOLS)..\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"</MSTEST> 
</PropertyGroup> 
... 
<Target Name="MyTests" > 
    <ItemGroup> 
    <!-- These Items should be evaluated at Target runtime --> 
    <TestFiles Include="..\Tests\**\bin\$(Configuration)\*.Test.dll" /> 
    </ItemGroup> 
    <!-- Run Tests --> 
    <PropertyGroup> 
    <!--TestSuccessOrNot is the property specify whether the Test is sucess or not --> 
    <TestSuccessOrNot>1</TestSuccessOrNot> 
    </PropertyGroup> 
    <Exec Command="$(MSTEST) @(TestFiles, ' ')" > 
    <Output TaskParameter="ExitCode" PropertyName="TestSuccessOrNot"/> 
    </Exec> 
    <Error Text="Tests Failed" Condition="$(TestSuccessOrNot) == '1'" /> 
</Target> 
+0

Dies wird auch von Microsoft empfohlen http://blogs.msdn.com/b/bharry/archive/2013/08/19/vs-tfs-2012-4-update-4- rc-2-is-available.aspx – qub1n