Junit Test

blabliblu

Mitglied
Hi

Ich möchte einen simplen Juni-Test erstellen. Ich möchte das aus dieser Klasse, die Distanz aus 2 Punkten überprüft wird, ob sie richtig oder falsch ist.


Die Klasse:
Java:
public Double calculateDistance(ArrayList<Point2D> points) {
        
        Double distance = 0.0;
        Point2D firstPoint;
        Point2D secondPoint;

        for(int i = 1; i < points.size(); i++){
            firstPoint = points.get(i-1);
            secondPoint = points.get(i);

            distance += firstPoint.distance(secondPoint);
        }

        return distance;
    }


Der Junit Test: Bei mir wird aktuell noch einfach (x: 0, y:10) übergeben, da die Rechnung noch nicht übergeben wurde.

Java:
@Test
    public void calculateDistance () {


        Point2D test1 = new Point2D(0.0, 10.0);
        Point2D test2 = new Point2D(20.0, 100.0);
        Point2D test3 = new Point2D(15.0, 150.0);



        assertEquals(10.0, test1);
        assertEquals(80, test2);
        assertEquals(135, test3);


    }


Kann mir jemand dabei helfen, dass der Test funktioniert?
 

LimDul

Top Contributor
Der Test wird (vermutlich) immer false liefern.

Du vergleichst den Wert 10.0 mit dem Objekt test1. Die sind mit ziemlicher Sicherheit nicht gleich. Was genau möchtest du da eigentlich vergleichen?
 

blabliblu

Mitglied
Ich möchte schlussendlich vergleichen, ob die 2 gesetzten "points" mit der Distanz übereinstimmen. Wie es in der calculateDistance-Klasse gerechnet wird. Ich versuche zum ersten mal einen Junit-Teset und bin mir überhaupt nicht sicher ob das geht...
 

temi

Top Contributor
Du kannst nur gleichartige Dinge miteinander vergleichen. Das ist das Äpfel-mit-Birnen-Ding. ;)

Du müsstest also eine Distanz (als double) berechnen (z. B. mit deiner Berechnungs-Methode) und die mit dem erwarteten (double) Wert vergleichen.
 

LimDul

Top Contributor
Dann vergiss erst mal das "Wort" Unit-Test und schreib ganz normalen Code:

Java:
public void test() {
Point2D p1 = new Point2D(...);
Point2D p2 = new Point2D(...);
double distance = ... Distanzberechnungsaufruf
}
Wenn du das hast, fehlt nur noch das assertEquals(erwarteteDistanz, distance) und du bist fertig
 

temi

Top Contributor
Aber muss ich die Distanz neu berechnen oder kann ich mir die Werte von der "calculateDistance" Klasse übergeben lassen?
Na, du möchtest ja die "calculateDistance"-Methode testen. Es gibt also festgelegte Punkte, die Methode berechnet etwas daraus und du vergleichst deren Ergebnis mit dem erwartetem Ergebnis. Insofern musst du dir den Wert von der Methode berechnen lassen.
 

LimDul

Top Contributor
Mal als Beispiel, du hast folgende Methode:

Java:
public static int addiere(int x, int y) {
return x + y;
}

Nun möchtest du testen, ob die richtig funktioniert. Das heißt, du überlegst dir, was wären interessante Werte zum testen. Mal als Beispiel "-3 und 6" Du rechnest selber nach, was du als Ergebnis erwarten würdest - 3. Dann schreibst du einen Unit-Test der genau das prüft:

Java:
@Test
public void testAddiere() {
int ergebnis = addiere(-3, 6);
assertEquals(3, ergebnis);
}

Das ist die Form, die eigentlch alle Unit-Tests haben. Du weißt was rauskommen müsste, weil du ja die Eingabe eindeutig vorgibst. Und dann vergleichst du, ob der Aufruf das gewünschte Ergebnis gebracht hat.
 
K

kneitzel

Gast
Als kleine Ergänzung zu @LimDul:

Ein Test betseht immer aus drei Schritten:
1. Vorbereitung! Der ist im Beispiel in #8 nicht vorhanden, da nicht benötigt. In den Bereich gehört z.B. die Erstellung von Objekten, die man benötigt. Also z.B. die Erstellung von Punkten von denen man die Differenz berechnen will.

2. Aktion! Hier wird die Aktion ausgeführt, die getestet werden sollen. Das ist in dem Beispiel der Aufruf von addiere. (Das ist in dem Beispiel etwas unschön - hier wird entweder eine Methode der Testklasse aufgerufen oder es gibt einen static import. Hier wird in der Regel auf einer Instanz, die in 1. erzeugt wurde, etwas aufgerufen.

3. Assert! Hier wird dann das Ergebnis geprüft.

Diesen Aufbau sollte man haben. Man findet teilweise auch andere Tests, wo dann immer weiter probiert wird:
- Es wird etwas erstellt und gemacht um das dann zu prüfen.
- Auf den Dingen vom vorherigen Schritt wird was anderes gemacht und das dann geprüft.
- Dann wird noch etwas gemacht und das Ergebnis auch geprüft
- ...

Diese Testketten sind aber in der Regel problematisch und sollten wenn möglich vermieden werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
J Junit surefire: enrich test information Allgemeine Java-Themen 0
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
E JUnit wie Testergebnisse pro Test ("Test Report") erhalten? Allgemeine Java-Themen 1
M JUnit Test Suites Allgemeine Java-Themen 2
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
P Klassen Junit test funktioniert nicht... Allgemeine Java-Themen 11
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
J JUnit, TestCase vs "einfacher" Test Allgemeine Java-Themen 3
1 JUnit Test Suit Allgemeine Java-Themen 2
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
D junit - frage zu fixtures/test suites Allgemeine Java-Themen 11
G JUnit Test Allgemeine Java-Themen 5
N ClassNotFound Exception bei JUnit Test? Allgemeine Java-Themen 2
GilbertGrape Warum schlägt JUnit-Test fehl? Allgemeine Java-Themen 19
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
J Junit start surefire for manual testing Allgemeine Java-Themen 1
P No JUnit tests found Allgemeine Java-Themen 5
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
K Input/Output JUnit: Log Inhalte, falsche Assertion Allgemeine Java-Themen 2
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
AssELAss Junit-Tests für SQL-Veribindung sowie SQL-Queries? Allgemeine Java-Themen 3
O Maven - JUnit - H2 Allgemeine Java-Themen 1
M Selenium JUnit Tests (Auswahl von Testmethoden auswerten) Allgemeine Java-Themen 5
C JUNIT - ANT - build.xml Allgemeine Java-Themen 0
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
B JUnit Zufalls Operation testen Allgemeine Java-Themen 1
P JUnit Allgemeine Java-Themen 2
B jUnit 4: Wie protokolliert man Testergebnisse? Allgemeine Java-Themen 1
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
L JUnit - automatisiertes vs. manuelles Testen? Allgemeine Java-Themen 6
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
A JUnit/Hashcode Problem Allgemeine Java-Themen 5
X Problem mit URLClassLoader und JUnit Allgemeine Java-Themen 3
N JUnit Allgemeine Java-Themen 13
M Junit Tests durchführen Allgemeine Java-Themen 18
M JVM Probleme JUnit Allgemeine Java-Themen 2
G NUnit Features in JUnit Allgemeine Java-Themen 2
darekkay (JUnit) Testdaten generieren - Framework? Allgemeine Java-Themen 2
A JUnit problem Allgemeine Java-Themen 9
T Organisation von Junit Testfällen? Allgemeine Java-Themen 2
M JUnit Tests vs. DBUnit Tests Allgemeine Java-Themen 3
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
U Fehler: Hauptklasse org.junit.runner.JUnitCore konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
J JUnit-Tests Zeichensatzproblem ? Allgemeine Java-Themen 2
S [JUnit] Name von TestCase bekommen Allgemeine Java-Themen 4
T Junit-Tests in Java Klasse ausführen Allgemeine Java-Themen 26
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
M JUnit TestSuite erstellen Allgemeine Java-Themen 2
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
G Testcases mit Junit auf private-Methode Allgemeine Java-Themen 7
C JUnit und das Zulassen von RuntimeExceptions Allgemeine Java-Themen 5
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
T JUnit-Log auslesen Allgemeine Java-Themen 13
C JUnit Tests Allgemeine Java-Themen 4
fastjack JUnit Supplementary Classes Allgemeine Java-Themen 4
O Junit Reports / Logs als XML ohne Maven/Ant Allgemeine Java-Themen 7
M Junit und Mocks Allgemeine Java-Themen 5
A Seltsames Verhalten von JUnit-Tests im Zusammenspiel mit Ant Allgemeine Java-Themen 6
S JUnit: Erzeugen einer IOException Allgemeine Java-Themen 9
G JUnit Tests Allgemeine Java-Themen 7
S JUnit - was mocken, was nicht? Allgemeine Java-Themen 3
S JUnit TesSuite und @Repeat Allgemeine Java-Themen 2
S JUnit Tests für GUI / Oberflächen Allgemeine Java-Themen 2
M Junit und Mocks bei JDBC Daos Allgemeine Java-Themen 8
M JUnit Problem mit AssertionFailedError Allgemeine Java-Themen 2
B Testfälle mit JUnit Allgemeine Java-Themen 4
S JUnit Allgemeine Java-Themen 15
G ANT Tutorial . Schritte bzgl. Junit Bibliothek Allgemeine Java-Themen 4
A JUnit Reports zu groß für XSLT Allgemeine Java-Themen 4
M JUnit und dynamische Tests Allgemeine Java-Themen 11
P JUnit unter Eclipse: Problem mit Exception Allgemeine Java-Themen 8
K Junit: Frage zum Ablauf Allgemeine Java-Themen 3
K JUnit: Tests über ant aufrufen Allgemeine Java-Themen 2
S JUnit und EasyMock Allgemeine Java-Themen 7
B Wie alt ist JUnit? Allgemeine Java-Themen 2
A Junit Exceptions testen Allgemeine Java-Themen 3
P Testen mit JUnit Allgemeine Java-Themen 8
7 JUnit: Testproblem. Allgemeine Java-Themen 23
G Ant + JUnit Allgemeine Java-Themen 2
F JUnit unter Ant Allgemeine Java-Themen 3
S Integer zu int konvertieren - JUnit Allgemeine Java-Themen 12
G testen mit JUnit? Allgemeine Java-Themen 3
K JUnit 4 User Interaktion Allgemeine Java-Themen 7
M Ant + Junit + Testclass in Jar Allgemeine Java-Themen 3
G Junit 4 - TestSuite Allgemeine Java-Themen 6
B JUnit Allgemeine Java-Themen 2
T CheckStyle, JUnit und FindBugs aus Java-Programm starten Allgemeine Java-Themen 2
S JUnit will ins Netz! Allgemeine Java-Themen 2
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
H JUnit Allgemeine Java-Themen 5
N Problem mit Ant und JUnit Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben