Il problema è che, a meno che non lo dici diversamente, NUnit genererà un sottoprocesso per eseguire i test quando lo riterrà necessario. Se lo guardi in Process Explorer, puoi vedere che "nunit-console.exe" * genera "nunit-agent.exe" *. Il debugger di Visual Studio non si collega automaticamente ai processi figli.
In questo caso, credo che la mancata corrispondenza della versione sia il motivo per cui sceglie di avviare un sottoprocesso. Il modo più semplice per ovviare a questo problema è modificare "nunit-console.exe.config" * per modificare il set di valori <supportedRuntime>
. Ci dovrebbe essere già un commento lì che segna la linea che si dovrebbe lasciare un commento, al fine di costringerlo a correre come .NET 4.0:
<startup useLegacyV2RuntimeActivationPolicy="true">
<!-- Comment out the next line to force use of .NET 4.0 -->
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0.30319" />
</startup>
Una volta modificata che, il primo processo NUnit sarà già .NET 4.0 e non dovrebbe essere necessario generare un sottoprocesso. Se si vuole essere sicuri, specificare /process=Single
e NUnit verrà eseguito in un singolo processo o fallirà immediatamente se non è possibile.
* - Se è necessario utilizzare le versioni x86, sostituto:
nunit-console.exe -> nunit-console-x86.exe
nunit-agent.exe -> nunit-agent-x86.exe
nunit-console.exe.config -> nunit-console-x86.exe.config
In questo caso, è possibile impostare i punti di interruzione. Come stai eseguendo i test e come stai collegando il debugger? –
@FrankSchwieterman Le proprietà di debug del mio progetto hanno un'azione di avvio che punta a nunit-console.exe e arg di riga di comando contenenti gli argomenti di nunit. Sto impostando i breakpoint quindi selezionando Debug in solution explorer per i test csproj. Il debugger viene eseguito e lo stato del punto di interruzione cambia con l'errore "i simboli non possono essere caricati" – simonc
hmm non suona come lo studio visivo è collegato al processo che esegue i test (sarà collegato a qualsiasi applicazione per cui è stato premuto f5, sebbene quell'app abbia una fase di compilazione per avviare NUNit) –