2013-07-06 12 views
7

sto provando a eseguire i nostri test tramite cmdline. Io uso VS2012, ma ho sempre questo errore:MSTest.exe (VS2012) si blocca QTAgent32.exe

error

Quando eseguo i test direttamente nel VS2010 sulla stessa macchina che funzionano bene. Non posso usare VS2010 per cmdline perché abbiamo la licenza sbagliata (la ricerca dell'assembly non funziona) quindi devo usare 2012. Tutti gli aggiornamenti di Windows sono presenti.

Qualcuno ha avuto problemi simili con MSTest/VS2012?

+0

Questo è un ExecutionEngineException, un arresto duro nel CLR. Normalmente causato da un codice non gestito che corrompe l'heap della garbage collection. Test fallito, forse. Qualunque problema misterioso di licenza tu abbia sarà probabilmente un * lotto * più facile da correggere che provare a risolvere questo crash. –

+0

Grazie per il suggerimento. La cosa strana è che quei test funzionano bene su un altro build build che ho creato oggi. Disponiamo di licenze VS2010 Prof che non supportano i tccmdline MSTest con il rilevamento degli assiemi e il nostro IT non acquisterà licenze di aggiornamento. – icywiener

+0

Sembra che Update1 o 2 di VS2012 rompa i test con .NET 3.5, quindi ha fatto una disinstallazione completa e reinstallato senza aggiornamenti e ora i nostri test sono di nuovo in esecuzione. – icywiener

risposta

1

Ho avuto lo stesso problema. Ho appena rimosso l'aggiornamento 2 di Visual Studio 2012. Passi:

  • rimuovere l'aggiornamento 2 di Visual Studio 2012 (tramite Visualizza aggiornamenti installati)
  • sistema di nuovo
  • Cambio installazione di Visual Studio 2012 (tramite Disinstalla o cambiare un programma-> Change-> Fix)
  • sistema di nuovo
6

Se si desidera mantenere VS 2012 update 2, 3, o 4 installato, è possibile provare la seguente soluzione:

eseguire i comandi al di sotto della linea di comando:

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

Questo è un workaround fornito da ragazzi di Microsoft.

È necessario eseguire nuovamente questo batch dopo aver installato gli aggiornamenti di Visual Studio o, a volte, anche gli aggiornamenti di Windows.

+2

Funziona anche con VS 2012 Update 4. –

2

ho seguito Yanhua di Microsoft article link e hanno trovato una soluzione che mi piaceva meglio di eliminazione dei file casuali:

Uso vstest.console.exe invece di MSTest.exe.

Nota, gli argomenti per vstest.console.exe sono diversi. Vuole un elenco separato da spazi di di test.dll

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

Qui è la mia messa a punto msbuild che fa la stessa cosa:

<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

Questo è consigliato anche da http://blogs.msdn.com/b/bharry/archive/2013/08/19/vs-tfs-2012-4-update-4- rc-2-is-available.aspx – qub1n