Das Test-Framework JUnit

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Prüfung objektorientierter Programme -1
Phasen und ihre Workflows
Eine Testumgebung für Java
Einführung in die Programmierung Zusammenfassung
Kapselung , toString , equals , Java API
der Universität Oldenburg
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Testgetriebene Entwicklung
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Regeln für Tester - best practice 1 Prüfe das eigene Programm nie als Einziger Testen.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
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,
Konstruktoren.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung Funktionen und Parameter
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Das Test-Framework JUnit
Automatisches Testen und Bewerten von Java-Klassen
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Wasserfallmodel Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1 WS 2012 Software-Engineering II Objektorientiertes Testen.
Software Design Patterns Extreme Programming (XP).
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
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.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Programme dokumentieren mit JavaDoc
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
Testtechniken-Praktikum WS 2005/06 1 Arbeiten mit JUnit Andreas Höfer Dr. Matthias Müller Mit Beiträgen von Johannes Link.
JUnit Grundkonzept Gruppe Markt. JUnit: Ziele Einfachheit: –Leicht erlernbare, bekannte Tools –Möglichst wenig Aufwand für die Implementierung von Testfällen.
TDD mit MSTest Stefan Lieser Web:
TDD mit MSTest Stefan Lieser
Stefan Lieser Web:
Programmiervorkurs WS 2014/15 Instanzmethoden
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
TDD mit MSTest Stefan Lieser Web:
Test-Driven Development
Einführung in die Programmierung mit Java
Das Build-Tool ANT ETIS SS04. ant 2 Gliederung Motivation Build-Datei build.xml Bestandteile build.xml –Properties Zusammenfassung.
Software - Testung ETIS SS05.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
 Präsentation transkript:

Das Test-Framework JUnit ETIS SS04

Gliederung Motivation TestFirst Grundlagen Assert TestCase TestSuite Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung JUnit ETIS SS04

Motivation (I) Kostspielige Folgen von Fehlern in Software Vorurteile: SOMIT: Testen wichtig!!! ABER: fast keiner tut es… Vorurteile: Keine Zeit, ABER: Tests stabilisieren Code Keine Lust, ABER: Testen ist kreativ + schafft Vertrauen zum Programm Mein Code ist fehlerfrei, ABER: Auswirkungen von Verbesserungen auf alten Code? Testabteilung testet, ABER: Je früher Fehler erkannt, desto besser JUnit ETIS SS04

Motivation (II) Unit-Tests Anforderungen an Test-Frameworks: Test einzelner Komponenten White-Box-Tests Anforderungen an Test-Frameworks: Test- und Anwendungscode getrennt (Größe/Übersicht) Testfälle unabhängig ausführbar (Fehler finden) Testergebnis schnell erkennbar JUnit erfüllt diese Anforderungen JUnit ETIS SS04

Motivation(III) JUnit: Open source Framework Autoren: Schreiben und Ausführen automatischer Unit Tests unter Java Version 3.8.1 (http://www.junit.org/) In jeder gängigen Java-IDE verwendbar Autoren: Kent Beck (Extreme Programming) Erich Gamma (Mitglied Gang of Four - Design Pattern) Entsprechende Frameworks für gängige Programmiersprachen erhältlich JUnit ETIS SS04

Motivation(IV) – JUnit in eclipse ETIS SS04

TestFirst (I) Ziel: Vorgehen: Qualitätssicherung: Testbarkeit, Einfachheit Vorgehen: Vor eigentlicher Codierung Test schreiben Erst wenn Test fehlerfrei, dann ist Code fertig Nur soviel Produktionscode wie Test verlangt Kleine Schritte (abwechselnd Test- und Produktionscode) Vor Integration in Gesamtsystem muss Unit Test erfolgreich sein JUnit ETIS SS04

TestFirst (II) Vorteile: Vorsicht: gesamter Code ist getestet (Zerstörung funktionierenden Codes sofort entdeckt) Tests dokumentieren Code Schnelles Feedback durch kurze Wechsel Erzeugung von Test- und Produktionscode Einfaches Design, da durch Test bestimmtes Design Vorsicht: Wenn nur triviale Testfälle betrachtet, nutzen Tests wenig... JUnit ETIS SS04

Grundlagen Einbinden der Testklasse in JUnit durch Ableiten von junit.framework.testCase jede Testklasse erhält Konstruktor für Namen des auszuführenden Testfalls JUnit erkennt Methode als Testfall, da sie Konvention public void test...() folgt mit assert-Methoden, z.B. assertTrue(...) kann man Bedingungen testen bei Fehlerfall bricht JUnit laufenden Testfall mit AssertionFailedError ab JUnit ETIS SS04

Assert (I) Klasse Assert definiert Tests von Werten und Bedingungen, die erfüllt sein müssen, Beispiele: Test, ob Bedingung wahr assertTrue(boolean condition) assertTrue(Fritz.isRadioStation) Test, ob zwei Objekte gleich (über equals-Methode) assertEquals(Object expected, Object actual) assertEquals(“JUnit“, “J“ + “Unit“) JUnit ETIS SS04

Assert (II) Test, ob zwei Fliesskommazahlen gleich sind (bei festzulegender Toleranz) assertEquals(double expected, double actual, double delta); assertEquals(3.00, 2.995, 0.005); Test, ob Objektreferenz null assertNull(hashMap.get(key)); Test, ob zwei Referenzen auf selbes Objekt verweisen assertSame(bar, hashMap.put(“foo“, bar).get(“foo“)); JUnit ETIS SS04

TestCase (I) Ausführung Testfälle auf fixem Satz zu testender Objekte (Test-Fixture) Pro Testfallmethode meist nur bestimmte Operation der Fixture getestet Alle Testfälle einer Testklasse sollen von gemeinsamer Fixture Gebrauch machen JUnit ETIS SS04

TestCase (II) Damit fehlerhafte Testfälle andere Testfälle nicht beeinflussen: Test-Fixture neu initialisieren Testklasse erbt von TestCase Test-Fixture Instanzvariablen in Testklasse Methode setUp() überschreiben, um Instanzvariable zu initialisieren Methode tearDown() überschreiben, um Ressouren (DB-Verbindung u.ä.) freizugeben setUp() wird vor Ausführung eines Testfalls aufgerufen, tearDown() danach JUnit ETIS SS04

TestCase (III) public class EuroTest extends TestCase{ private Euro two; public EuroTest(String name){ super (name); } protected void setUp(){ two = new Euro(2.00); protected void tearDown(){ JUnit ETIS SS04

Lebenszyklus TestCase Testframework sucht in Testklassen nach öffentlichen Methoden, ohne Parameter und Rückgabewert, die mit test beginnen (Reflection) Sammeln der Methoden in Testsuite + unabhängige Ausführung Für jeden Testfall neue Instanz der Testklasse und damit Test-Fixture erzeugen, um Seiteneffekte zu vermeiden Vor Ausführung Testfall setUp() aufgerufen (falls neu definiert) test-Methoden ausgeführt Nach Test tearDown (falls neu definiert) Schritte ab 3 wiederholen, bis alle Testfälle einmal ausgeführt JUnit ETIS SS04

UML Diagramm TestCase Assert JUnit-Framework assertTrue() assertEquals() assertNull() ... <<extends>> TestCase setUp() tearDown() <<extends>> EigenerTest testMethode() JUnit ETIS SS04

TestSuite (I) Dient dem Zusammenfassen von Tests Suite: TestSuite-Objekt, dem beliebig viele Tests und Testsuiten hinzugefügt werden können In statische suite-Methode definiert, welche Tests zusammen auszuführen sind public static Test suite(){ TestSuite suite = new TestSuite(); suite.addTestSuite(CostumerTest.class); suite.addTestSuite(MovieTest.class); return suite; } JUnit ETIS SS04

TestSuite(II) – Komposite Pattern <<interface>> Test 1..n <<implements>> tests TestCase TestSuite JUnit ETIS SS04

Zusammenfassung JUnit: Framework für Test von Java-Programmen Dient Test von Komponenten Unit Tests sind Investition in die Zukunft erleichtert es, dem Testcode gleiche Aufmerksamkeit wie Programmcode widmen JUnit ETIS SS04

Literatur http://www.frankwestphal.de/UnitTestingmitJUnit.html Johannes Link, Unit Tests mit Java, dpunkt.Verlag, 2002 Barbara Beenen, Einführung in JUnit - Rot-grünes Wechselspiel, javamagazin, 05/04 Backschat, M., Edlich, J2EE-Entwicklung mit Open-Source-Tools, Spektrum Akademischer Verlag, München, 2004 JUnit ETIS SS04