Bei vielen Software-Entwicklern stößt der Begriff "Testing" nicht gerade auf Gegenliebe. Dass das Erstellen von Tests mit den richtigen Werkzeugen und Methoden ein sehr kreativer Prozess sein kann, der nicht nur die Qualität der Software erhöht, sondern auch die Entwicklungsgeschwindigkeit steigert und zudem noch sehr viel Spaß machen kann, wird in dieser Session gezeigt werden. Neben den grundlegenden Gedanken von Test Driven Developmen, Refactoring,
Unit-Testing und Mock-Frameworks sind auch neuere Konzepte, wie das Interactive Testing Teil der Session. Aber nicht nur Methoden und Werkzeugen, sondern auch TDD-typische Best-Practices, wie das Model View Presenter Design-Pattern und Presenter First sollen anhand von vielen Beispielen erläutert werden.
Leider kann das Video aufgrund des schlechten Tons hier nicht angeschaut werden!
Mock-Objekte mit Rhino Mocks
Geschrieben von: Romano Adler
Beim Erstellen von Unit-Tests ist es nicht immer möglich eine Komponente völlig isoliert zu testen. Komponenten haben Beziehungen zu anderen Komponenten und müssen mit diesen kommunizieren, um eine spezifische Aufgabe zu lösen. Eine Methode, die eine Suche durchführt benötigt eine Datenbank. Ohne diese lässt sich die Operation nicht durchführen. Aber was, wenn es noch gar keine Datenbank gibt? Ein Mock-Objekt simuliert ein vordefiniertes Verhalten. Das zu testende Objekt greift auf das Mock-Objekt, statt auf das echte Objekt zu. Das wohl gängigste Framework in der .NET-Welt ist Rhino Mocks.
Die Abkürzung LINQ steht für Language INtegrated Query und stellt eine Methode innerhalb von Microsoft .NET dar, um Abfragen an einen Datencontainer zu stellen. Die Abfragesprache ist direkt in eine Programmiersprache, wie C# 3.0 oder VB.NET 9 integriert. Dadurch müssen Abfragen nicht als String definiert werden, man erhält IntelliSense-Unterstützung und der Code wird vom Compiler geprüft. Die Syntax ist dabei sehr an SQL angelehnt. Es gibt eine Reihe Erweiterung, wie LINQ to XML, um Anfragen auf XML-Dokumenten auszuführen oder LINQ to SQL, um Anfragen an Datenbank zu stellen. LINQ-Anfragen können generell gegen jedes Objekt ausgeführt werden, dass das Interface IEnumerable implementiert.
Geschäftslogik lässt sich sehr einfach über die öffentliche API der Komponenten testen. Aber wie kann man die UI einer Anwendung überprüfen, ohne extrem viel Aufwand zu betreiben? Durch das MVP-Pattern oder auch Passiv View wird es möglich mehr Code und näher an der Benutzeroberfläche zu testen. Dabei werden Geschäftslogik, Präsentationslogik und die sichtbaren UI-Elemente einer Anwendung sauber getrennt.