2010-11-18 7 views
8

Ich schreibe Erweiterung Methoden zum Testen der Werte für meine Unit-Test. Ein naives Beispiel wäre:So erstellen Sie benutzerdefinierte MSTest Assert-Methoden mit "richtigen" Callstack

Und es in einem Test mit:

someBool.ShouldBeTrue(); 

Alles funktioniert, außer, dass die Linie, die die Ausnahme werfen wird denjenigen sein, den ich am Ende, wenn Doppelklick auf die fehlgeschlagener Test im Fenster Testergebnisse, und in Testergebnisdetails wird die Auswurflinie in der Fehler-Stack-Kurve angezeigt.

Gibt es eine Möglichkeit diese Runde, so dass "someBool.ShouldBeTrue();":

  1. die Linie ist, dass der fehlerhaften Test in Testergebnis Doppelklick auf Fenster öffnet?
  2. ist die einzige Zeile in Stack-Trace?
+0

Wenn Sie dies tun, können Sie ein Blick auf dieses Projekt: http://fluentassertions.codeplex.com/. – Steven

Antwort

1

Ich denke, ich fand die Antwort. Sie müssen lediglich Ihre benutzerdefinierten Assertion-Klassen/Methoden in eine separate Assembly einfügen. Sie können dies als ein separates Projekt in der gleichen Lösung haben, wenn Sie möchten.

+0

Könnte geschworen haben, dass ich meine benutzerdefinierten Assertion-Methoden in einer separaten Assembly hatte, als ich diese Frage schrieb. Wenn ich es jetzt versuche, funktioniert alles wie erwartet.Meine Testprojekte verweisen auf eine DLL, die die Assertion-Methoden enthält, und wenn ein Test fehlschlägt, ist 1 (in meiner ursprünglichen Frage) erfüllt. 2 ist nicht, aber das ist in Ordnung. Danke – hcanber

+1

Stellen Sie sicher, dass keine PDB-Datei für die separate Assembly vorhanden ist. – hcanber

2

Es gibt eine Klassenbibliothek bereits dafür geschrieben: http://geekswithblogs.net/sdorman/archive/2009/01/31/adding-custom-assertions-to-mstest.aspx

Es ist ein Zitat aus dem obigen Link:

... Als Referenz jene nicht verfügbar sind Asserts:

  • Assert .IsNaN
  • Assert.IsEmpty
  • Assert.IsNotEmpty
  • Assert.Greater
  • Assert.GreaterOrEqual
  • Assert.Less
  • Assert.LessOrEqual
  • Assert.IsAssignableFrom
  • Assert.IsNotAssignableFrom
  • CollectionAssert.IsEmpty
  • CollectionAssert.IsNotEmpty
  • StringAssert.AreEqualIgnoringCase
  • StringAssert.IsMatch
  • FileAssert.AreEqual
  • FileAssert.AreNotEqual

... Ich habe eine Klassenbibliothek erstellt, die alle von ihnen mit Ausnahme der FileAssert Methoden und StringAssert.IsMatch enthält. ... Sie können die Klasse von meinem öffentlichen SkyDrive-Ordner herunterladen: https://skydrive.live.com/?cid=93d618d639ec9651&id=93D618D639EC9651%211283

Verwandte Themen