Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Das Test-Framework JUnit ETIS SS04. JUnit 2 Gliederung Motivation TestFirst Grundlagen Assert TestCase –Lebenszyklus TestCase –UML-Diagramm TestCase TestSuite.

Ähnliche Präsentationen


Präsentation zum Thema: "Das Test-Framework JUnit ETIS SS04. JUnit 2 Gliederung Motivation TestFirst Grundlagen Assert TestCase –Lebenszyklus TestCase –UML-Diagramm TestCase TestSuite."—  Präsentation transkript:

1 Das Test-Framework JUnit ETIS SS04

2 JUnit 2 Gliederung Motivation TestFirst Grundlagen Assert TestCase –Lebenszyklus TestCase –UML-Diagramm TestCase TestSuite Zusammenfassung

3 ETIS SS04JUnit 3 Motivation (I) Kostspielige Folgen von Fehlern in Software –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

4 ETIS SS04JUnit 4 Motivation (II) Unit-Tests –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

5 ETIS SS04JUnit 5 Motivation(III) JUnit: Open source Framework –Schreiben und Ausführen automatischer Unit Tests unter Java –Version (http://www.junit.org/)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

6 ETIS SS04JUnit 6 Motivation(IV) – JUnit in eclipse

7 ETIS SS04JUnit 7 TestFirst (I) Ziel: –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

8 ETIS SS04JUnit 8 TestFirst (II) Vorteile: –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...

9 ETIS SS04JUnit 9 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

10 ETIS SS04JUnit 10 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)

11 ETIS SS04JUnit 11 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));

12 ETIS SS04JUnit 12 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

13 ETIS SS04JUnit 13 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

14 ETIS SS04JUnit 14 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(){ }

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

16 ETIS SS04JUnit 16 UML Diagramm TestCase Assert assertTrue() assertEquals() assertNull()... TestCase setUp() tearDown() EigenerTest testMethode() > JUnit-Framework

17 ETIS SS04JUnit 17 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; }

18 ETIS SS04JUnit 18 TestSuite(II) – Komposite Pattern > Test TestCaseTestSuite > 1..n tests

19 ETIS SS04JUnit 19 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

20 ETIS SS04JUnit 20 Literatur 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


Herunterladen ppt "Das Test-Framework JUnit ETIS SS04. JUnit 2 Gliederung Motivation TestFirst Grundlagen Assert TestCase –Lebenszyklus TestCase –UML-Diagramm TestCase TestSuite."

Ähnliche Präsentationen


Google-Anzeigen