TDD mit MSTest Stefan Lieser

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Phasen und ihre Workflows
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ultris V10 Bewegen, Drehen und Kollisionserkennung.
Objektrelationales Mapping mit JPA Testing Jonas Bandi Simon Martinelli.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Komponentenbasierter Taschenrechner mit CORBA
Abstrakte Klassen.
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Das Test-Framework JUnit
Das Test-Framework JUnit
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Fehlerabdeckung/ Regressionstest1 Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Fehlerabdeckung/ Regressionstest Vortragende:
Einführung in Visual C++
Portierung von Java nach C
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
TENEZ Hallenreservierungssystem Verwaltung von mehreren Vereinen Mehrere Standorte mit Plätzen Kundenverwaltung Reports Mobile Version Open Source.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Test Driven Development - Romano Adler-
Automated Software Testing
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
NDepend - Kurzvorstellung Stefan Lieser Web:
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Objektorientiertes Konstruieren
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Testtechniken-Praktikum WS 2005/06 1 Arbeiten mit JUnit Andreas Höfer Dr. Matthias Müller Mit Beiträgen von Johannes Link.
TDD mit MSTest Stefan Lieser Web:
Software Development Principles Stefan Lieser Web:
Stefan Lieser Web:
Stefan Lieser Web:
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
early binding (frühe Bindung) late binding (späte Bindung)
TDD mit MSTest Stefan Lieser Web:
Test-Driven Development
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Stefan Lieser Wer erstellt regelmäßig Unit Tests?
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Praktikum Mobile Web 2.0 – 2.Teil Wolfgang Wörndl, Robert Eigner.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Nichts sticht besser Objekte isoliert testen
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
Definition Felder Konstruktor Methoden Beispiel
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
 Präsentation transkript:

TDD mit MSTest Stefan Lieser Email: stefan@lieser-online.de Web: http://www.lieser-online.de

Agenda Begriffsklärung Überblick MSTest Red, Green, Refactor Unit Test, Integration Test, etc. Überblick MSTest Red, Green, Refactor Vorgehensweise bei TDD Mock Frameworks Rhino.Mocks TypeMock Sollen Tests das Design beeinflussen?

Begriffsklärung Unit Test Integration Test automatisiert Testet die kleinste Einheit, in der Regel eine Klasse Isolieren der „class under test“ von ihren Abhängigkeiten Integration Test Tests über mehrere Layer z.B. auch inkl. Datenbankzugriff

Überblick MSTest Klasse enthält Tests Diese Methode ist ein Test using Microsoft.VisualStudio.TestTools.UnitTesting; namespace MeineTests { [TestClass] public class BasicTests [TestMethod] public void Test() { int i = 5; Assert.AreEqual(5, i); } Klasse enthält Tests Diese Methode ist ein Test Annahme die erfüllt sein muss

Test Setup Initialisierung die vor jeder Testmethode ausgeführt wird. [TestClass] public class BasicTests { private IList<string> list; [TestInitialize] public void Setup() { list = new List<string>(); } [TestMethod] public void Test() { list.Add("bla"); Assert.AreEqual(1, list.Count); Initialisierung die vor jeder Testmethode ausgeführt wird.

MSTest Projekt - Tücke Damit MSTest ein Projekt als Testprojekt erkennt muss in der Projektdatei folgender Eintrag vorhanden sein: <ProjectTypeGuids> {3AC096D0-A1C2-E12C-1390-A8335801FDAB}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} </ProjectTypeGuids> Solange man Testprojekte über das vorhandene Projekt-Template anlegt ist dies gegeben...

Red, Green, Refactor Red Green Refactor Schreibe einen Test. Implementiere gerade soviel dass es syntaktisch korrekt ist. Green Ergänze die Implementierung gerade so weit, dass der Test erfolgreich ist. Refactor Überarbeite die Implementierung so dass sie „besser“ wird, ohne ihr Verhalten zu modifizieren.

Test first? Sapir-Whorf These Die Sprache formt das Denken. Spezifikation (statt Test) trifft die Sache eher. Test first führt dazu dass man eine neue Funktionalität erst anwendet ehe man sie implementiert. Dadurch wird die API in der Regel besser.

Test first? Die Testabdeckung (Coverage) ist in der Regel höher als bei Tests die im Nachhinein ergänzt werden. Kein Dogma! Manchmal geht es nur im Nachhinein. Manchmal hilfreich: erst einen Spike ohne Tests, diesen dann wegwerfen und Test first neu beginnen.

Isolieren einer Klasse Unit Tests testen eine Klasse isoliert, also ohne ihre Abhängigkeiten. Die Abhängigkeiten werden durch Test Doubles ersetzt. Test Doubles können implementiert werden durch handgeschriebene Klassen, von einem Mock Framework generierte Klassen. Stub Reines Double Mock Stub mit zu prüfenden Erwartungen

Test Doubles Stub Ein Double welches die Abhängigkeit der zu testenden Klasse ausfüllt. Rückgabewerte und Verhalten können von außen gesteuert werden um das Verhalten der zu testenden Klasse zu beeinflussen. Mock Es werden Erwartungen definiert die durch den Test erfüllt werden müssen. Wird eine Erwartung nicht erfüllt schlägt der Test fehl.

Mock Frameworks - Arbeitsweise Record/Replay Während der Record Phase wird das erwartete Verhalten definiert. In der Replay Phase werden die während der Record Phase aufgezeichneten Aufrufe abgespielt. Nach der Replay Phase wird geprüft, ob alle erwarteten Aufrufe korrekt erfolgt sind.

Mock Frameworks - Beispiele Rhino.Mocks (open source) Implementiert mit Hilfe von zur Laufzeit generierten Proxy Klassen. Verwendet Castle Proxy TypeMock (commercial, abgespeckt free) Verwendet das Profiler API um Aufrufe abzufangen. Technisch leistungsfähiger (z.B. Unterstützung für statische Methoden).

Links Sapir-Whorf These: http://de.wikipedia.org/wiki/Sapir-Whorf-Hypothese Rhino.Mocks TypeMock JetBrains ReSharper NUnit