# JUnit Tests --> Wie am besten vorgehen?



## Loki2 (23. August 2007)

Hallo,

ich muss meinen JavaCode mit JUnit testen. Das Problem ist das mir eine generelle Vorgehensweise fehlt die man waehrend der Entwicklung beruecksichtigen muss.
Also muss ich alles so programmieren das alles moegliche etwas zurueck gibt nur damit ich es in der Testklasse dann vergleichen kann oder wie oder was?
Mir fehlt echt voellig der Anfang und eine Strategie wie man bei sowas vorgeht.

Vielleicht habt ihr ja irgendwelche Ratschlaege wie man am besten an JUnit rangeht um seinen Code aucht "testbar" zu entwickeln.

Ich wuerde mich freuen. 

Vielen Dank.

Gruss und so
Loki2


----------



## Laocoon (25. August 2007)

Hi,

Komplexe Frage  Ich versuch mal eine Übersicht zu geben, wie ich das handhabe. 
Prinzipiell kannst du Tests vorher schreiben (Stichwort "Testdriven Development") oder nachträglich implementieren. 
Prinzipiell sollte man versuchen seinen Gesamten Code zu testen. Das ist oft natürlich nicht möglich, daher solltest du dich bei größeren Projekten auf "wichtige" Segmente  beschränken (Also jene die hohe Auswirkung haben, wenn sie nicht mehr funktionieren, die an denen oft gearbeitet wird und die, die besonders komplexe Funktionen implementieren). 
In Java Schreibe ich Tests immer pro Klasse in eine separate Datei (am besten für die Tests in Eclipse einen eigenen Quellcodeordner erstellen). Und dann pro Funktion einen oder mehrere Tests (je nach logischer Struktur). Versuche auch Tests (ausser integrationstests) möglichst lokal zu halten. Also ein Test soll wirklich nur Funktion X testen, auch wenn diese Funktion Y und Z benötigt (einfacher gesagt als getan^^). Kannst mal nach _mock _und _stub _suchen. 
Du testest dann auf Werte die funktionieren sollten (also zufällig innerhalb des Definitionsbereichs der Funktion liegende Werte), Randwerte und Werte die nicht funktionieren sollten (insbesondere NULL etc.). Dabei kann man dann auch direkt testen ob das exception handling sauber funktioniert. Und du musst dich "überwinden" deinen Code kaputt zu machen. Man neigt oft dazu Tests so zu schreiben, dass alles so funktioniert wie es soll. Das bringt nur leider herzlich wenig. 
Dem Code selber sollte man nicht ansehen, dass er getestet wird. D.h. keine Methoden schreiben, die nur dazu da sind, dass ein Test läuft. Gut designeter Code (Also geringe Kopplung hohe Kohäsion) ist in der Regel auch gut zu testen.

Ein Tool, dass ich sehr hilfrecih finde ist: ECLEmma (Eclipse Plugin)
Ähnliches gibt es auch für andere IDEs.
Wenn dich das Thema wirklich interessiert kann ich nur Objektorientiertes Testen von Uwe Vigenschow empfehlen. Ließt sich erstaunlich gut für die trockene Materie und vermittelt was von der Grundeinstellung die man beim Testen haben sollte (technisch hält sich das Buch leider sehr in grenzen). 
Ich würde mich evt auch mit Ant und Testautomatisierung beschäftigen, wenn du JUnit in größeren Projekten und mehreren Entwicklern einsetzen willst. 

Ich hoffe ich konnte dir ein paar Anregungen geben
Grüße
Daniel


----------

