TDD mit MSTest Stefan Lieser Web:

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.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
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.
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.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
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.
Schleifen mit der Turtle
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.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
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
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
Software Development Principles Stefan Lieser Web:
Stefan Lieser Web:
Stefan Lieser Web:
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
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.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
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?
Tutorium Software-Engineering SS14 Florian Manghofer.
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.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
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
Grundkurs Informatik 11-13
 Präsentation transkript:

TDD mit MSTest Stefan Lieser Web:

Agenda Begriffsklärung 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 automatisiert Testet die kleinste Einheit, in der Regel eine Klasse Isolieren der class under test von ihren Abhängigkeiten

Überblick MSTest 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 [TestClass] public class BasicTests { private IList list; [TestInitialize] public void Setup() { list = new List (); } [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: {3AC096D0-A1C2-E12C-1390-A FDAB}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Solange man Testprojekte über das vorhandene Projekt-Template anlegt ist dies gegeben...

Red, Green, Refactor Red 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 ohne ihre Abhängigkeiten, dazu muss sie isoliert werden. Test Double oder Stand in Stub Mock Methoden Handgeschriebene Fakes Mock Framework

Test Doubles Stub Mock

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 TypeMock

Links Sapir-Whorf These: