2015-11-24 13 views
31

Ich bin neu zu Testing Tools auf dem .NET verwenden, also habe ich es mit Hilfe von ReSharper aus NuGet heruntergeladen.ExpectedException in nUnit gab mir einen Fehler

Ich verwende diese Quick Start um zu lernen, wie nUnit zu verwenden. Ich hatte gerade den Code kopiert und ein Fehler kam auf dieses Attribut auf:

[ExpectedException(typeof(InsufficientFundsException))] //it is user defined Exception 

Der Fehler ist:

Der Typ oder Namespace-Name ‚ExpectedException‘ nicht gefunden werden konnte (möglicherweise fehlt ein mit der Direktive oder einer Baugruppenreferenz?)

Warum? Und wenn ich eine solche Funktionalität brauche, wofür sollte ich sie ersetzen?

+0

Welcher Fehler wird angezeigt? Wird der Fehler in nUnit oder Ihrer IDE angezeigt? – Chawin

+0

Ich denke, dass Ihr Code eine Ausnahme zurückgibt, die nicht die InsufficientFundsException ist –

Antwort

54

Wenn Sie NUnit 3.0 verwenden, liegt der Fehler an der ExpectedExceptionAttributehas been removed. Sie sollten stattdessen ein Konstrukt wie die Throws Constraint verwenden.

Zum Beispiel das Tutorial Sie diesen Test verknüpft hat:

[Test] 
[ExpectedException(typeof(InsufficientFundsException))] 
public void TransferWithInsufficientFunds() 
{ 
    Account source = new Account(); 
    source.Deposit(200m); 

    Account destination = new Account(); 
    destination.Deposit(150m); 

    source.TransferFunds(destination, 300m); 
} 

Um dies zu ändern, um die unter NUnit 3.0, ändern Sie es an die Arbeit folgendes:

[Test] 
public void TransferWithInsufficientFunds() 
{ 
    Account source = new Account(); 
    source.Deposit(200m); 

    Account destination = new Account(); 
    destination.Deposit(150m); 

    Assert.That(() => source.TransferFunds(destination, 300m), 
       Throws.TypeOf<InsufficientFundsException>()); 
} 
4

Wenn Sie noch verwenden möchten Beachten Sie Folgendes:

[TestCase(null, typeof(ArgumentNullException))] 
[TestCase("this is invalid", typeof(ArgumentException))] 
public void SomeMethod_With_Invalid_Argument(string arg, Type expectedException) 
{ 
    Assert.Throws(expectedException,() => SomeMethod(arg)); 
} 
11

Nicht sicher, ob dies kürzlich geändert wurde, aber mit NUnit 3.4.0 Assert.Throws<T>.

[Test] 
public void TransferWithInsufficientFunds() { 
    Account source = new Account(); 
    source.Deposit(200m); 

    Account destination = new Account(); 
    destination.Deposit(150m); 

    Assert.Throws<InsufficientFundsException>(() => source.TransferFunds(destination, 300m)); 
} 
Verwandte Themen