Jul 242013
 

Ich bin gestern bei einer “0815” Fakes Framework Demo auf eine Exception gestoßen. Der Code macht nix besonderes und unterdrückt einfach bei einem MessageBox.Show() Aufruf die Anzeige der MessageBox und simuliert das der Benutzer auf Ok geklickt hat:

fakesdebugging_fakemessagebox

Soweit so gut. Funktioniert auch. Lässt sich nur nicht debuggen:

fakesdebugging_unittestisolationexception

Beim Aufruf ShimContext.Create() erhalte ich eine “UnitTestIsolationException”. Der Fehlertext ist eine große Hilfe, demnach würde ich wohl heute noch mein Visual Studio neu starten.

Am Ende war die Lösung einfach. Leider wurde das Projekt von Visual Studio 2010 auf 2012 migriert und enthielt noch eine *.testsettings Datei. Die Unit Tests wurden also mit diesen Einstellungen ausgeführt.

fakesdebugging_testsettings

Visual Studio kann mit den *.testsettings von 2010 noch umgehen und in manchen Fällen sind diese auch noch notwendig. Zum Beispiel wenn man Tests aus Visual Studio heraus Remote ausführen möchte oder für Web Performance und Last Tests. (siehe http://msdn.microsoft.com/de-de/library/jj635153.aspx)

In VS 2012 wurden bekanntlich die *.runsettings eingeführt. Damit laufen nicht nur MSTest Unit Tests sondern auch NUnit, XUnit usw. Die runsettings sind allerdings etwas unhandlich weil es kein UI zum editieren gibt und man die Einstellungen im XML vornehmen muss.

Nach umschalten auf eine *.runsettings Datei lassen sich die Tests welche MS Fakes enthalten wieder debuggen.

fakesdebugging_runsettings

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)