2010-07-29 7 views
11

Quando si eseguono i test dell'unità MSTEST in modalità di debug, l'esecuzione si interrompe in ogni eccezione prevista generata. La mia prova assomiglia a questo metodo diCome evitare che le eccezioni previste interrompano l'esecuzione del test di debug?

[TestMethod()] 
[ExpectedException(typeof(ArgumentNullException))] 
public void ShouldThrowExceptionWhenPassingNull() 
{ 
    object data = null; 
    target.CheckNull(data); 
} 

l'obiettivo è simile al seguente:

public void CheckNull(object data) 
{ 
    if (ReferenceEquals(null, data)) 
    { 
     throw new ArgumentNullException("data"); 
    } 
} // test run breaks here: ArgumentNullException was unhandled by user code 

risposta

7

Hai provato eseguire i test utilizzando ctrl-R ctrl-T invece di ctrl-R T?

EDIT Se non si tratta di un problema di scelta rapida da tastiera, controllare il collegamento this. Si potrebbe provare quanto segue come notato c'è:

  1. Disattiva "si infrangono sulla utente eccezioni non gestite" per i tipi di eccezione si si sta incontrando qui (via Debug -> eccezioni)
  2. Disattiva "rompere il utente eccezioni non gestite" per tutte le eccezioni (via Debug -> eccezioni)
  3. Disattiva "Just My Code"
+0

Non utilizzo le scorciatoie da tastiera per eseguire test, io invece utilizzo il mouse. Ho letto l'articolo e non mi ha aiutato perché mostra le diverse scorciatoie da eseguire con e senza debug. Voglio eseguire il debug ma senza fermarsi per le eccezioni previste. –

+0

@Jader Dias - Vedi la mia ultima modifica per un'altra possibile soluzione. – dcp

+0

ciò influirà anche sulle eccezioni impreviste –

2

Il suggerimento di @ dcp sembra funzionare per MSTEST, ma potresti prendere in considerazione l'ipotesi di ottenere TestDriven.Net. Lo uso quasi esclusivamente come test runner e non ho questo problema utilizzando la modalità "Esegui test in debug" con il tasto destro del mouse. Inoltre, trovo che sia più comodo del test runner integrato in quasi tutte le circostanze.

1

CTRL + R A funziona per me senza modificare alcuna opzione.

Penso che il problema sia dovuto al fatto che si sta eseguendo il progetto di test dal pulsante Avvia debug (F5) sulla barra degli strumenti. Se fai clic sul pulsante di riproduzione verde, ti fermerai in ogni eccezione, anche se prevista.

Per eseguire tutti i test senza fermarsi in ogni eccezione, fare clic su: Test -> Esegui -> Tutti i test in soluzione o utilizzare la scorciatoia: CTRL + R, A

Con la finestra i risultati dei test aperta, CTRL + R, D funziona anche. Nella finestra dei risultati del test diventa evidente la differenza tra test di esecuzione e test di debug.