2009-06-29 11 views
2

mir wirklich NUnit Die neue (er) die Fähigkeit, Liebe für die erwartete Ausnahme Tests zu testen, das heißt:nunit resharper erwartete Ausnahme Test

var ex = Assert.Throws<SomeException>(()=>methodToThrowException("blah")); 

Ein kleines Problem ich finde, ist, dass irgendeine Art von Betreibern Überlastung oder anderer Zuordnung zu testen Typ-Funktionalität, der einzige Weg, ich weiß, wie dies zu tun ist durch den Compiler eine Variable geben zuweisen, etwa so:

// test division operator "/" 
var ex = Assert.Throws<PreconditionException>(() => { var ignored = nbr/m; }); 

Dies ist kompakt und funktioniert gut, hat aber den Ärger, wo ReSharper ein streckt Warnung, dass die ignorierte Variable nie verwendet wird. Dies ist kontraproduktiv, wenn Sie Resharper-Grafiken verwenden möchten, um die Qualität des Codes auf einen Blick zu beurteilen. Resharper ist natürlich technisch korrekt, aber gibt es eine Möglichkeit, Resharper zu sagen, dass dies meine Absicht ist? Ich habe einen Test mit vielen dieser Arten von Tests, also wird ein Pragma fies aussehen.

Irgendwelche Vorschläge (außer "darüber hinwegkommen, Alter")?

Prost

Antwort

4

ein Feld mit dem Unit-Test hinzufügen und die Warnung unterdrücken, das heißt:

// ReSharper disable UnaccessedField.Local 
     private object _ignore; 
// ReSharper restore UnaccessedField.Local 

Die Verwendung dieses Feld als Zuweisungsvariable in Ihrem Test delegieren:

// test division operator "/" 
var ex = Assert.Throws<PreconditionException>(() => { _ignore = nbr/m; }); 

Diese resharper ruhig hält, so dass Sie wissen, ob es etwas beschwert sich über jetzt ist es wahrscheinlich eine legitime Beschwerde, die betrachtet werden sollten. Dies eliminiert den Rauschpegel, so dass Sie fokussieren können (ich habe über 50 Tests in einer wichtigen Klasse, die etwas Refactoring benötigt).

Cheers, Berryl

4

Sie könnten Ihre eigene Throws Methode schreiben, die stattdessen eine Func<object> nimmt, und dann schreiben Sie einfach:

var ex = Assert.Throws<PreconditionException>(() => nbr/m); 

Dann die neue Methode NUnit einreichen und auf die nächste Version warten :)

0

Und es ist wirklich ordentlich Sie die Ausnahme bekommen und mit ihm arbeiten ...

var exception = Assert.Throws<ArgumentException>(() => dlinvalid.ProcessData()); 
Assert.That(exception.Message, Is.EqualTo("foo bar"), "Expected bar foo"); 

plus es funktioniert mit ReSharper, während ExpectedException mit NUnit werden andernfalls scheint 2.5

Verwandte Themen