Come posso eseguire NUnit in modalità di debug da Visual Studio?

Ho recentemente creato un framework di test per un po ‘di C # su cui ho lavorato. Ho installato NUnit e un nuovo progetto all’interno del mio spazio di lavoro per testare il componente. Tutto funziona bene se carico i miei test di unità da Nunit (v2.4), ma sono arrivato al punto in cui sarebbe stato davvero utile eseguire in modalità di debug e impostare alcuni punti di interruzione.

Ho provato i suggerimenti di diverse guide che suggeriscono tutti di modificare le proprietà “Debug” del progetto di test:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe Command line arguments: /assembly: \TestDSP\bin\Debug\TestDSP.dll 

Sto usando la versione della console lì, ma ho provato anche a chiamare la GUI. Entrambi mi danno lo stesso errore quando provo e inizio il debug:

 Cannot start test project 'TestDSP' because the project does not contain any tests. 

Questo perché normalmente carico \ DSP.nunit nella GUI di Nunit ed è qui che si svolgono i test?

Sto iniziando a pensare che il problema potrebbe essere che VS vuole eseguire il proprio framework di test ed è per questo che non riesce a trovare i test NUnit?

Modifica : A chi chiede informazioni sui dispositivi di prova, uno dei miei file .cs nel progetto TestDSP ha un aspetto simile a questo:

 namespace Some.TestNamespace { // Testing framework includes using NUnit.Framework; [TestFixture] public class FirFilterTest { [Test] public void Test01_ConstructorTest() { ...some tests... } } } 

… Sono abbastanza nuovo per C # e il framework di test NUnit, quindi è del tutto ansible che mi sia sfuggito qualche informazione cruciale 😉

Soluzione finale : il grosso problema era il progetto che avevo usato. Se scegli Other Languages -> Visual C# -> Test -> Test Project … quando scegli il tipo di progetto, Visual Studio proverà a utilizzare il proprio framework di test per quanto ne so. Dovresti scegliere un normale progetto libreria di classi C # e poi le istruzioni nella mia risposta selezionata funzioneranno.

Io uso la stessa tecnica di come stai provando Jon, senza il flag / assembly, es

 Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe Command line arguments: "\bin\Debug\Quotes.Domain.Tests.dll" 

TestDSP.dll contiene tutti i tuoi TestFixtures?

Poiché il mio progetto di test non è il progetto di avvio nella soluzione, eseguo i test facendo clic con il tasto destro del mouse sul progetto di test e selezionando Debug -> Avvia nuova istanza

Quando ho bisogno di eseguire il debug dei test NUnit, nunit-agent.exe semplicemente l’applicazione NUnit GUI nunit-agent.exe usando “Debug | Attach to Process” ed nunit-agent.exe i test dalla GUI. Vengono colpiti tutti i punti di interruzione nei miei test (o il codice che stanno testando). Sto fraintendendo la tua domanda o funzionerà per te?

Basta rimuovere la linea che sembra

  {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}  

dal tuo file di progetto. Questa linea dice fondamentalmente a VS.Net che si tratta di un progetto di test, quindi “Can not start test project”. FYI qui la prima guida dice “è un test”, la seconda dice “è C #”. Per informazioni su questi Guids: http://www.mztools.com/Articles/2008/MZ2008017.aspx

Oltre alla risposta fornita da @Justin, ecco alcuni dettagli in più per NUnit 2.6.

Utilizzando NUnit 2.6, colbind nunit.exe o nunit-console.exe e NON l’agente. La configurazione annotata da @Justin è leggermente diversa. Di seguito è riportato un esempio da nunit.exe.config (lo stesso per nunit-console.exe.config).

      

Per il progetto di test .NET 4, per ottenere punti di interruzione da colpire, è necessario commentare o rimuovere la linea v2.0 come suggerito dal commento. Una volta fatto ciò, sono stato in grado di eseguire il debug del progetto di test .NET 4.0.

Se si utilizza NUnit 2.4 o versione successiva è ansible inserire il seguente codice nella class SetUpFixture . (Puoi farlo con le versioni precedenti ma dovrai fare tutto ciò che è equivalente a SetUpFixture o copiarlo nel test stesso.)

 [SetUpFixture] public class SetupFixtureClass { [SetUp] public void StartTesting() { System.Diagnostics.Debugger.Launch(); } } 

Che cosa fa Debugger.Launch() fa apparire la seguente finestra di dialogo quando si fa clic su Esegui in NUnit.

JIT Debugger Dialog

Quindi scegli l’istanza in esecuzione di Visual Studio con il tuo progetto aperto (il secondo nel mio screenshot), quindi il debugger verrà allegato e tutti i breakpoint o le eccezioni verranno visualizzati in Visual Studio.

In Nunit 3.0.1 (sto usando VS2013), apri dal menu principale> Test> Windows> Test Explorer. Quindi in “Test explorer”, fare clic con il pulsante destro del test case, si potrebbe vedere: inserisci la descrizione dell'immagine qui

Spero che questo ti aiuti.

Installa TestDriven.NET , che è un plugin per Visual Studio

Da lì è ansible fare clic con il tasto destro del mouse sul proprio assieme di test unitario e fare clic su Esegui test per eseguire l’intera suite, fare clic con il pulsante destro del mouse su una class TestFixture per eseguire solo i test in tale class o fare clic con il pulsante destro del mouse su un metodo Test per eseguire solo tale metodo.

Hai anche la possibilità di Test con Debugger, se hai bisogno di breakpoint nei tuoi test in modalità di debug.

Prova NUnitit – un componente aggiuntivo di Visual Studio open source per il debug dei casi di test NUnit

HomePage – http://nunitit.codeplex.com/

Rimuovere ProjectTypeGuids dal file di progetto.

Se riesci a far funzionare la console o la GUI, ma i punti di interruzione non vengono colpiti, è ansible che la tua app stia eseguendo un diverso runtime .NET rispetto a NUnit. Verifica se il tuo nunit-console.exe.config / nunit.exe.config ha il runtime specificato (le configurazioni risiedono nella stessa directory delle nunit exe). Specifica il runtime usando il nodo di avvio:

     

Se il percorso del progetto contiene spazi, ad esempio “Nuovo progetto” nel percorso \bin\Debug\New Project\Quotes.Domain.Tests.dll quindi racchiudere l’opzione di avvio -> Percorso del progetto Argomenti della riga di comando tra virgolette.

Ho passato un sacco di tempo per capirlo.

Ora con le foto:

  1. Esegui NUnit gui ( Scarica 2.6.2 da qui ) quindi vai su File -> Open Project

inserisci la descrizione dell'immagine qui

  1. Selezionare il file di prova .dll dalla cartella bin ( C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll )

  2. Vai a Visual Studio Debug -> Attach to process (Si aprirà la finestra di albind al processo)

  3. Dall’elenco scorrere verso il basso e selezionare nunit-agent.exe quindi fare clic su Attach

inserisci la descrizione dell'immagine qui

  1. A questo punto i breakpoint nei test dovrebbero diventare rossi maturi (da cavi).

  2. Fai clic su Run su Nunit Gui e dovresti ottenere il punto di interruzione …

Spero che questo ti salvi un po ‘di tempo.

Riguardo a ciò che ha detto il signor Patrick McDonald

Poiché il mio progetto di test non è il progetto di avvio nella soluzione, eseguo i test facendo clic con il tasto destro del mouse sul progetto di test e selezionando Debug -> Avvia nuova istanza

Ho provato ad applicare la mia libreria di classi di test, ma ho avuto qualche errore sul percorso, quindi ho provato a rimuovere gli “Argomenti della riga di comando”, e fortunatamente ha funzionato bene e come previsto.

Sembra che tu stia cercando di usare la libreria sbagliata. NUnit può iniziare solo se la DLL che stai usando contiene TestFixtures.

+1 su TestDriven.Net. Ho avuto la possibilità di usarlo un numero di volte. È ansible scaricare la versione personale per scopi di valutazione secondo la licenza su http://testdriven.net/purchase_licenses.aspx .

Ho avuto lo stesso errore con MSTest. Ho trovato che nella finestra Test Output , alcuni test avevano ID duplicati e non potevano essere caricati. Ho rimosso tutti i test duplicati e ora sono stato in grado di eseguire i test quando avvio il progetto.

C’è anche un’estensione ora “Visual NUnit” che ti consentirà di eseguire i test all’interno di Visual Studio in modo molto simile alla build in handle di framework di test. Controllalo nel gestore delle estensioni.

Apri Visual Studio —> il tuo progetto —> Seleziona ‘Proprietà’ —> Seleziona ‘Debug’ -> Seleziona ‘Avvia programma esterno’ e imposta il percorso del tuo NUnit lì (Es: Start programma esterno = C : \ Programmi \ NUnit 2.6.2 \ bin \ nunit.exe) —-> Salva

Dopo aver impostato ciò basta fare clic su Debug

Per me la soluzione era di adattare il file di configurazione di nunit. Per utilizzare nunit con l’opzione 4.5-.Net framework e x64 build, ho dovuto aggiungere una riga al tag di avvio (versione runtime supportata).

     

Successivamente, potrei iniziare facendo clic con il tasto destro del mouse su Testproject Debug -> Inizia nuova istanza. Prima, avevo bisogno di colbind nuovamente manualmente il progetto al processo.

Le mie proprietà Debug erano, C: \ Programmi (x86) \ NUnit 2.6.4 \ bin \ nunit.exe con argomento del percorso del dll da testare.

Ulteriori informazioni: nunit per test con .NET 4.0

Vedi se questo aiuta .. Come aggiungere NUnit in Visual Studio

(RighteousRant) Anche se personalmente non mi piace questo approccio .. Se hai bisogno di un debugger mentre stai testando il tuo codice, è un “odore” nel senso che non hai abbastanza confidenza / sapere come funziona il tuo codice e hai bisogno del debugger per dirti questo. TDD dovrebbe liberarti dal bisogno di un debugger se fatto bene. Usa ‘Collega debugger a NUNit’ solo per casi rari o quando stai guadando il codice di qualcun altro.