6

Questo è strano, ma all'improvviso lo ExpectedExceptionAttribute ha smesso di funzionare per me l'altro giorno. Non sono sicuro di cosa sia andato storto. Sto utilizzando VS 2010 e VS 2005 parallelamente. Non funziona in VS 2010. Questo test dovrebbe passare, tuttavia non sta funzionando:ExpectedExceptionAttribute non funziona in MSTest

[TestMethod] 
[ExpectedException(typeof(ArgumentNullException))] 
public void Test_Exception() 
{ 
    throw new ArgumentNullException("test"); 
} 

Qualche idea? Questo davvero sux.

+0

Sto diventando lo stesso, ma non riesco a trovare nulla a riguardo. Qualcun altro ha lo stesso problema. http://stackoverflow.com/questions/2628965/expectedException-on-testmethod-visual-studio-2010 –

+0

Stai eseguendo il debug o eseguendo il test? – Joop

risposta

1

Ho avuto lo stesso problema, ma alla fine sono riuscito a farlo funzionare. Non proprio sicuro di come sia, ma ecco una lista di cose che ho fatto tra il fatto che non funzionava quando ha iniziato a funzionare di nuovo.

  • trasformato il progetto in fase di sperimentazione per .NET 4
  • Spento CodeCoverage
  • Girato CodeCoverage riaccendere
  • ha fatto un RebuildAll sul progetto di test

Non sai quale bit fissa comunque. Ad ogni modo, spero che questo aiuti!

12

Non far risorgere un filo morto, ma mi sono imbattuto in questo quando improvvisamente mi è successo, nel caso in cui possa aiutare gli altri. Alla fine ho rintracciato qual era il problema, che potrebbe essere correlato a quello che Jon ha trovato. L'attributo ExpectedException sembra funzionare solo se il progetto è riconosciuto come TestProject. (Non solo un assembly .NET)

Scaricare il progetto, modificare il file csproj e controllare che la seguente impostazione c'è:

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

(Supponendo progetto VS2010) ricaricare il progetto e ricostruire. I test ExpectedException dovrebbero ora passare.

Ci siamo imbattuti in questo problema quando la standardizzazione test da NUnit per MSTest (grazie TFS CI build) e ha scoperto che dopo la sostituzione Assert.Throws <> bella semplicità & flessibilità con [ExpectedException (Type)] schifezza, (per non parlare perdendo [TestCase()]!) i test ExpectedException hanno avuto esito negativo senza motivo. Ritorna a NUnit con ExpectedException, nessun problema, MSTest si rifiuta di eseguirlo.

Inutile dire che sarà spingendo per ottenere NUnit indietro, dopo aver trovato: http://blog.shawnewallace.com/2011/02/running-nunit-tests-in-tfs-2010.html

+1

Ciao Steve! Non c'è da vergognarsi nel rispondere a vecchie domande, in particolare con una così grande risposta! Grazie! – tmesser

+0

Uso effettivamente il costrutto Nunit (Assert.throws) dall'interno di MsTest ;-) – Konstantin

+0

Ha funzionato anche per me in VS2012. Ma è ancora più strano: ho molte semplici librerie di classi con questa ExpectedException che funzionano come un fascino. Anche il progetto incriminato ha funzionato una volta e improvvisamente ha smesso di funzionare. – JotaBe

1

Questo thread è venuto su una ricerca su Google e da quando ho incontrato questo anche oggi, ma per un motivo diverso, io aggiungi un'altra possibile anser qui.

ho avuto test unitari per qualche funzione con l'attributo [ExpectedException] in posizione, ma un aggiornamento del codice recente fatto la funzione che è stato testato async per migliorare le prestazioni.

Ciò ha causato il fallimento di questi test dell'unità. La soluzione più semplice era quello di rendere anche l'async unità-test, tornare Task e attendono la funzione di chiamata:

[TestMethod] 
[ExpectedException(typeof(Exception))] 
public async Task UnitTestAnAsyncFunction() 
{ 
    await sut.DoStuffAsync(); 

    //Assert 
    //ExpectedException 
} 
0

ho un'altra risposta, che non ha bisogno di modificare il file csproj. Sembra che la causa principale fosse solo un riferimento mancante. Ho aggiunto Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll ai riferimenti del progetto e using Microsoft.VisualStudio.TestTools.UnitTesting; ai file di codice.La DLL può essere trovato in

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\ 

o

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\ 

Spero di poter aiutare chiunque risparmiare un po 'di tempo.