2012-06-26 22 views
23

Sto imparando xUnit e finora ho trovato che fosse uno strumento molto utile. Invece, mi sta facendo ripensare alcune delle mie tattiche di codifica a TDD.come eseguire il debug con xUnit?

Tuttavia, ho riscontrato un problema interessante. Il mio caso di test sta fallendo. Nessun problema reale, ma come faccio a eseguirne il debug?

In particolare, il mio caso di test ha esito negativo a causa di un errore "fuori indice" o qualcosa di simile. NON sta fallendo nella dichiarazione di affermazione. Quello di cui ho bisogno ora, è un modo per eseguire il test case con il debugger di Visual Studio attivo in modo che possa vedere lo stato delle diverse variabili.

Non invierò codice, poiché questa situazione è destinata a venire di nuovo. Qualcuno ha qualche idea di come eseguire il debug del caso di test stesso?

Quasi dimenticato! Sto utilizzando,

  • Visual Studio 2010 Ultimate (licenza Dreamspark)
  • xUnit 1,9

mio flusso di lavoro comporta l'uso del corridore xUnit GUI per eseguire i test.

Se quello che sto chiedendo è impossibile, qualcuno può suggerire una suite di test alternativa che potrei usare che ha quello che voglio?

+1

In realtà, se si esegue il debug di unit test, si tratta di un test dell'unità non valido. I test dovrebbero essere progettati nel modo più semplice e diretto possibile, in modo da poter verificare la correttezza osservandoli a malapena. Valuta la possibilità di riscrivere questo test. – J0HN

+3

@ J0HN, l'errore in questione è venuto dal codice che stavo testando, NON dal test dell'unità. Il mio problema era nel trovare perché si stava verificando. xUnit mi dice che la riga XX ha prodotto un'eccezione YYY, ma non mi dice nient'altro. Come era lo stato delle variabili quando si è verificata l'eccezione (o simili)? – chronodekar

+0

@ J0HN ci sono casi in cui il test unitario non è di per sé negativo; Ho appena avuto un esempio che è stato molto difficile da scoprire a causa della * dissonanza cognitiva * ~ ~ avvertenza, questo si è verificato molto presto nello sviluppo di un progetto ed era correlato a un valore letterale numerico nel [SUT] (http: // stackoverflow. it/questions/7321407/what-is-sut-and-where-did-it-from-from) che aveva trasposto le cifre; in questo caso l'unit test + debug ha collaborato per aiutarmi a rendere il SUT più robusto. – gerryLowry

risposta

8

Non l'ho provato, ma dovresti essere in grado di collegare Visual Studio alla GUI xUnit e debugare da lì.

Dal menu Debug, selezionare 'attach to process', individuare il nome del file eseguibile nell'elenco e fare clic su attach. Impostare i breakpoint nel test dell'unità come richiesto ed eseguire il test dalla GUI. Il punto di interruzione dovrebbe essere colpito come previsto.

+1

Con NUnit, è possibile impostare la GUI come programma da avviare durante il debug e passare il nome dell'assembly come argomento. Colpendo F5 verrà quindi lanciata la GUI NUnit sotto il debugger con l'assembly corretto. Sto dicendo che puoi fare qualcosa di simile con xUnit. – adrianbanks

+0

@adrianbanks Grazie mille per l'idea! Non mi sono mai veramente sentito. Qualche giocherellando con le proprietà di "debug" e ho ottenuto il runner xUnit GUI da avviare quando eseguo il debug E con informazioni variabili anche !! :) – chronodekar

6

Quanto segue funzionerà in VS.NET e in SharpDevelop.

Apri proprietà e del progetto di prova vanno a scheda Debug:

  • Sotto "Azione di avvio" impostare "Start programma esterno" al xUnit corridore eseguibile di scelta.

  • In "Opzioni di avvio" impostare "Argomenti della riga di comando" sul nome di DLL di debug del progetto.

  • Impostare anche "Directory di lavoro" nella directory "bin \ Debug \" del progetto.

Quindi selezionare Debug> Esegui oppure premere F5 per eseguire il test in modalità debug. I punti di interruzione saranno colpiti.

Il vantaggio di eseguire il debug in questo modo è che non è necessario collegarsi alla GUI xUnit ogni volta, è sufficiente eseguire il progetto di test.

2

Se si dispone di un nuovo applet, con l'estensione contrib di X-unit installata (consigliata seriamente!), Fare clic con il tasto destro del mouse sulla classe in Visual Studio e fare clic su "Debug unit test".

Semplice!

+0

Finché non si usa l'estensione per ReSharper che dovrebbe supportare xUnit2, il debugging è un problema con .... https://github.com/xunit/resharper-xunit/issues/9 – Daniel

+0

+ 1 @Adam Diment ... grazie ... sto usando vs2015 Enterprise con JetBrains ReSharper Ultimate quindi non sono sicuro se questa funzione provenga da ReSharper o ora sia nativa di vs2015; a prescindere, facendo clic con il pulsante destro del mouse sul nome della classe della mia classe di test xUnit.net, a causa delle tue indicazioni, ho trovato "Test di debug" (ctrl + r, ctrl + t) ... il tuo suggerimento mi ha aiutato a scoprire il motivo del mio test in mancanza (specialmente un refuso di un letterale a cui ero stato accecato). ** B -) ** – gerryLowry

8

ho fallito nell'attuazione tutto quanto sopra, ma le seguenti funzionato per me: prima che le linee in cui si desidera eseguire il debug aggiungere la seguente riga (quindi eseguire il test):

 System.Diagnostics.Debugger.Launch(); 

Lo svantaggio è che lancerà un'altra istanza di VS :).

Cheers!

+0

Questo purtroppo sembra l'unico modo per eseguire il debug del test dnx in versione VS 2015 – STO

25

In VS2015 e versioni successive, installare il pacchetto NuGet xunit.runner.visualstudio. Quindi eseguire il debug è semplice come fare clic con il pulsante destro del mouse sul test nella finestra di test explorer. (Test -> Windows -> TestExplorer se non riesci a vederlo).

enter image description here

+0

+1 @ user1585345 grazie ... mi sono dimenticato del mantra "when in doubt, right-click"; il tuo suggerimento è un modo meraviglioso per eseguire rapidamente il debug di un singolo test di malfunzionamento, se necessario. – gerryLowry

+1

Ho provato questo, ma continuo a trovare TestClass.cs non trovato. –

1

In Visual Studio 2017, fare in modo che configurazione della soluzione è in modalità 'Debug'. In modalità 'Rilascio' non è il debug.

Problemi correlati