das test framework junit l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Das Test-Framework JUnit PowerPoint Presentation
Download Presentation
Das Test-Framework JUnit

Loading in 2 Seconds...

play fullscreen
1 / 20

Das Test-Framework JUnit - PowerPoint PPT Presentation


  • 146 Views
  • Uploaded on

Das Test-Framework JUnit. ETIS SS04. Gliederung. Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung. Motivation (I). Kostspielige Folgen von Fehlern in Software SOMIT: Testen wichtig!!! ABER: fast keiner tut es…

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Das Test-Framework JUnit' - marcus


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
gliederung
Gliederung
  • Motivation
  • TestFirst
  • Grundlagen
  • Assert
  • TestCase
    • Lebenszyklus TestCase
    • UML-Diagramm TestCase
  • TestSuite
  • Zusammenfassung

JUnit

motivation i
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

JUnit

motivation ii
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

JUnit

motivation iii
Motivation(III)
  • JUnit: Open source Framework
    • 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

testfirst i
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

JUnit

testfirst ii
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...

JUnit

grundlagen
Grundlagen
  • Einbinden der Testklasse in JUnit durch ableiten von Framework-Basisklasse 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

assert i
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

assert ii
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

testcase i
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

testcase ii
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

testcase iii
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

lebenszyklus testcase
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

uml diagramm testcase
UML Diagramm TestCase

Assert

assertTrue()

assertEquals()

assertNull()

...

JUnit-Framework

TestCase

setUp()

tearDown()

EigenerTest

testMethode()

JUnit

testsuite i
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

testsuite ii komposite pattern
TestSuite(II) – Komposite Pattern

<<interface>>

Test

1..n

tests

TestCase

TestSuite

JUnit

zusammenfassung
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

literatur
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