2015-08-12 9 views
6

Ich bin nur auf der Suche nach einigen Beispielen, wenn es sinnvoll ist, Assert.Catch oder Assert.Throws für die Geltendmachung von Ausnahmen in Komponententests zu verwenden. Ich weiß, dass ich ExpectedException auch verwenden kann, aber ich bin neugierig, den Unterschied zwischen "Catch" und "Throws" zu kennen. Vielen Dank!Wann Assert.Catch im Vergleich zu Assert.Throws im Unit Testing

Antwort

9

Die erste Zeile der documentation scheint ziemlich klar:

Assert.Catch zu Assert.Throws ähnlich ist, aber eine Ausnahme übergeben, die von den angegebenen abgeleitet wird.

So Assert.Catch verwenden, wenn eine Ausnahme, dass aus der angegebenen Ausnahme ergibt sich auch gültig ist (was bedeutet, dass es auch in einem äquivalenten catch Block abgefangen werden).

Die Dokumentation für Assert.Throws enthält Beispiele für beide:

// Require an ApplicationException - derived types fail! 
Assert.Throws(typeof(ApplicationException), code); 
Assert.Throws<ApplicationException>()(code); 

// Allow both ApplicationException and any derived type 
Assert.Throws(Is.InstanceOf(typeof(ApplicationException), code); 
Assert.Throws(Is.InstanceOf<ApplicationException>;(), code); 

// Allow both ApplicationException and any derived type 
Assert.Catch<ApplicationException>(code); 

// Allow any kind of exception 
Assert.Catch(code); 
Verwandte Themen