JUnit-Skript -- unschön?

Status
Nicht offen für weitere Antworten.

klofisch

Mitglied
Hallo,

ich wüsste gern ob die Testklasse so ok ist. Ich frage weil ja für jeden Testfall setup() alles neuinitialisiert wird.

Code:
package calculator;

import junit.framework.TestCase;
import org.junit.After;
//import org.junit.AfterClass;
import org.junit.Before;
//import org.junit.BeforeClass;
import org.junit.Assert.*;
//import org.junit.Test;
import static org.junit.Assert.assertTrue;

public class calculatorTest extends TestCase {

    private int nbErrors = 0;

    public void testAdd1() {
        calculator calculator = new calculator();
        double result = calculator.add(10, 50);
        assertEquals(60, result, 0);
    }

    public void testAdd2() {
        calculator calculator = new calculator();
        double result = calculator.add(57, 35);
        assertEquals(92, result, 0);
    }
    public void testSub1() {
        calculator calculator = new calculator();
        double result = calculator.sub(50, 10);
        assertEquals(40, result, 0);
    }

    public void testSub2() {
        calculator calculator = new calculator();
        double result = calculator.sub(10, 50);
        assertEquals(-40, result, 0);
    }

    public void testMulti1() {
        calculator calculator = new calculator();
        double result = calculator.multi(5, 7);
        assertEquals(35, result, 0); // (Erwartetes Ergebnis, tatsächliches Ergebnis, DELTA (möglicher Abweichungsraum)
        assertTrue(36 == result);// 36 ist ein falsches Ergebnis deshalb wird hier "true" züruckgegeben
        fail("does not compute :-P");
    }

    public void testMulti2() {
        calculator calculator = new calculator();
        double result = calculator.multi(10, 50);
        assertEquals(500, result, 0);
    }

    public void testDiv1() {
        calculator calculator = new calculator();
        double result = calculator.div(6, 3);
        assertEquals(2, result, 0);        
    }

    public void testDiv2() {
        calculator calculator = new calculator();
        double result = calculator.div(81, 9);
        assertEquals(9, result, 0);
    }

    public static void main(String[] args) {
        calculatorTest test = new calculatorTest();
        try {
            test.testAdd1();
            test.testAdd2();
            test.testSub1();
            test.testSub2();
            test.testMulti1();
            test.testMulti2();
            test.testDiv1();
            test.testDiv2();                        
        } catch (Throwable e) {
            test.nbErrors++;
            e.printStackTrace();
        }
        if (test.nbErrors > 0) {
            throw new RuntimeException("There were " + test.nbErrors + " error(s)");
        }
    }

    public calculatorTest() {
    }

//    @BeforeClass
//    public static void setUpClass() throws Exception {
//    }
//
//    @AfterClass
//    public static void tearDownClass() throws Exception {
//    }

    @Before
    @Override
    public void setUp() {
    }

    @After
    @Override
    public void tearDown() {
    }
}

Danke für Tipps und ein frohes Fest.

Gruß
Peter
 
G

Guest

Gast
JUnit-Tests haben keine main-Methode. Klassennamen beginnen mit einem Grossbuchstaben und du solltest auch
Negativtests durchführen (z.B. calculator.div(1,0)), um sicherzustellen, dass das ganze nicht aus dem Ruder läuft,
nur weil falsche Parameter übergeben wurden bzw. dass es zu bekannten Fehlern führt.
 

kama

Top Contributor
Hallo,

Code:
public void testMulti1() {
        calculator calculator = new calculator();
        double result = calculator.multi(5, 7);
        assertEquals(35, result, 0); // (Erwartetes Ergebnis, tatsächliches Ergebnis, DELTA (möglicher Abweichungsraum)
        assertTrue(36 == result);// 36 ist ein falsches Ergebnis deshalb wird hier "true" züruckgegeben
        fail("does not compute :-P");
    }
Kann mir mal einer Kurzen Teil erklären ? Hier werden doch double's verglichen, somit sollte hier doch immer ein Epsilon (letzes Argument der assertEquals() Methode) angegeben sein...

MfG
Karl Heinz Marbaise
 
G

Gast

Gast
@kama, das seh ich auch so.

Neben den Negativtests ist es auch angebracht Testwerte zu klassifizieren und dann die Grenzen mitzubetrachten.

z.b: Klassen:
negative Zahlen, 0, positive Zahlen.

Daraus folgt:
-unendlich(Double.MAX_VALUE * -1)
-0 (Double.MIN_VALUE * -1)

0

+0 (Double.MIN_VALUE)
+unendlich (Double.MAX_VALUE)

Diese 5 Testwerte dann in allen Kombinationen Testen.
für calculator.multi(double, double) ergeben sich dann also 25 Testfälle.
 

kama

Top Contributor
Hallo,

@Gast:
das war dann der eine Teil, was mir nicht wirklich an diesem TestCase klar ist, dass hier
Code:
assertEquals(35, result, 0); // (Erwartetes Ergebnis, tatsächliches Ergebnis, DELTA (möglicher Abweichungsraum)
        assertTrue(36 == result);// 36 ist ein falsches Ergebnis deshalb wird hier "true" züruckgegeben
        fail("does not compute :-P");
zuerst ein assertEquals(...) gemacht wird, dann ein assertTrue, was meiner Meinung nach immer fehlschlagen muss und zu guter Letzt noch ein "fail()". Hm....
Also was soll der Test jetzt prüfen ?

Mal von dem "Problem" doubles per "==" zu vergleichen einmal abgesehen....

Weiterhin wäre es "sinnvoll", die Instanzbildung (calculator calculator = new calculator(); ) doch in eine setUp() zu legen....

MfG
Karl Heinz Marbaise
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
6 Best Practice Feedback zu Service / JUnit Tests Java Basics - Anfänger-Themen 3
M Anfängerfehler - Tests JUnit IntelliJ Java Basics - Anfänger-Themen 24
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
A JUnit testing is inkonsistent Java Basics - Anfänger-Themen 12
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
W JUnit Tests Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
L JUnit tests in java Java Basics - Anfänger-Themen 5
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
F JUnit - Was ist mit "side effects" gemeint ? Java Basics - Anfänger-Themen 2
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
L Junit Testing bei XML? Java Basics - Anfänger-Themen 3
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
A Objekt in Methode zurückgeben, JUnit zeigt Error Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
O JUnit - Objektreferenzen Java Basics - Anfänger-Themen 3
G Testen mit JUnit Java Basics - Anfänger-Themen 4
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
C JUnit Tests. How to Java Basics - Anfänger-Themen 5
S Junit Test Java Basics - Anfänger-Themen 2
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
L Junit Tests Java Basics - Anfänger-Themen 10
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
V JUnit Klassen Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
S Kommt es zu Seiteneffekten wenn man waehrend den laufenden JUnit Tests den Code aendert? Java Basics - Anfänger-Themen 2
M JUnit Testmethoden mit mehreren assert Methoden Java Basics - Anfänger-Themen 1
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
Z JUnit Exception Java Basics - Anfänger-Themen 2
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
M Reihenfolge von Testmethoden in JUnit beeinflussen Java Basics - Anfänger-Themen 2
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
G JUnit-Tests im Programmdurchlauf starten Java Basics - Anfänger-Themen 4
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
T JUnit test failed Java Basics - Anfänger-Themen 3
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
T Junit in Eclipse Java Basics - Anfänger-Themen 1
P JUnit bedeutungen Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
S JUnit assertEquals funktioniert nichgt wie es sollte :( Java Basics - Anfänger-Themen 7
V Frage zu JUnit Tests Java Basics - Anfänger-Themen 3
B JUnit für JFileChooser Java Basics - Anfänger-Themen 6
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
S File vergleich - Junit Java Basics - Anfänger-Themen 6
T JUnit Java Basics - Anfänger-Themen 18
G Junit Java Basics - Anfänger-Themen 4
X JUnit testing Java Basics - Anfänger-Themen 7
T JUnit Suite frage Java Basics - Anfänger-Themen 6
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
S InvocationTargetException bei JUnit Testlauf Java Basics - Anfänger-Themen 2
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
T Junit --Exception testen Java Basics - Anfänger-Themen 15
A JUnit Tests in Jar-Archiv packen Java Basics - Anfänger-Themen 2
G Erste Schritte JUNIT Regressionstests automatisieren Java Basics - Anfänger-Themen 2
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
M JUnit - nur Failures loggen? Java Basics - Anfänger-Themen 2
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
R String Replace für JUnit Java Basics - Anfänger-Themen 19
T JUNIT Nullpointerexception Java Basics - Anfänger-Themen 3
M JUNIT tests mit ant script ausführen Java Basics - Anfänger-Themen 4
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
S [JUnit] Print Results while running Java Basics - Anfänger-Themen 6
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
T Junit Tests Java Basics - Anfänger-Themen 7
I JUnit Datapoints für mehrere Testklassen Java Basics - Anfänger-Themen 4
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
M Junit tests gehen nicht Java Basics - Anfänger-Themen 2
E OOP einfache Array Aufgabe mit jUnit Java Basics - Anfänger-Themen 5
L JUNIT Testing Java Basics - Anfänger-Themen 3
C jUnit: Erfahren, ob der getestete Code eine Exception gehandelt hat Java Basics - Anfänger-Themen 3
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
turmaline JUnit testen ob keine Exception auftritt Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben