Please activate JavaScript!
Please install Adobe Flash Player, click here for download

arcAKTUELL 4.2012 - Raumbezogene Aspekte gesellschaftlicher Fragen

49T I P P S U N D T R I C K S Für diese Methode bietet sich unter anderem ein Test an, der verifiziert, ob der Teil in der Schleife denn auch wirklich die Objekte identifizieren kann, die in der Liste erpIds angefragt wurden. Aufgrund des Umfangs dieser Methode entstehen auch für die Testme- thode einige Zeilen Code, um die entsprechenden Fakes zu erzeugen. Der testende Code könnte dann wie folgt aussehen: Während des Schreibens des Testcodes fiel auf, dass Typemock nicht in der Lage war, die beiden Zeilen mit dem Query-Filter zu mocken. In sol- chen Fällen hilft ein kleines Extract-Method-Refactoring in eine Get- Query-Filter-Method, deren Aufruf sich nun einfach mocken lässt. Die nächsten Zeilen dienen dazu, eine Cursor-Logik zu implementieren, die drei Features mit bestimmten Ids erzeugt. Diese Ids werden dann mit einer zweiten Referenz-Id-Liste verglichen mittels: Das ist die eigentliche zu testende Logik – also der Aufruf des beste- henden Codes. Abschließend wird verifiziert, ob die Referenz-Id-Liste durch die Logik um die vorhandenen Ids gekürzt wurde. Übrig bleiben dürfen dann nur die Ids, die nicht in den Features vorkommen – das sind 999 und 1004. Mit dieser abschließenden Assertion zeigt sich auch, dass Statusbasier- tes und Verhaltensbasiertes sich mixen lassen. Das erlaubt einen flie- ßenden Übergang zwischen diesen beiden Welten. Allerdings sollte man dies meiden.6 Ausblick Mocking Frameworks erlauben durch das einfache Erzeugen verschie- denster ArcObjects und das elegante Überspringen nicht relevanter Lo- gik einen deutlich leichteren Einstieg in die ArcObjects Unit Testing Welt als bei ausschließlicher Beschränkung auf Testing Frameworks. Als Einstieg kann man Moq und Typemock Basis aufgrund ihrer Einfach- heit empfehlen. Für intensives Unit Testing ist Typemock Essential sicher die richtige Wahl. Mit dieser Edition kann Brownfield-Code aufgebrochen werden und es lassen sich alle .NET-Artefakte mocken. Der dargestellte Source Code steht zum Download auf GitHub zur Ver- fügung.7 Marko Apfel Esri Deutschland GmbH Kranzberg http://geekswithblogs.net/mapfel/ 1 Martin Fowler: Mocks Aren’t Stubs http://bit.ly/TarmBZ 2 Moq http://code.google.com/p/moq/ 3 Rhino Mocks http://bit.ly/QALmKg 4 Typemock Isolator http://bit.ly/SI7GPS 5 Michael C. Feathers: Effektives Arbeiten mit Legacy Code http://amzn.to/SPCQWe 6 Roy Osherove: The Art of Unit Testing http://amzn.to/PXRHyv 7 Source Code auf GitHub http://bit.ly/OI3Ifu ++ 49 g

Seitenübersicht