JUnit testen ob keine Exception auftritt

turmaline

Bekanntes Mitglied
Hallo Leute,

mit der fail()-Methode der Assert-API kann man abtesten ob ein Aufruf fehlschläft. Wie kann ich das gegenteil abtesten: also dass während der Ausführung einer konkreten Methode keine Exception geworfen wird.. Es muss nichts mehr abgetestet werden. Die Methode liefert auch ncihts zurück.

Vielen Dank im Voraus,

madlena
 
M

maki

Gast
Dann einfach nur die zu testenden Objekte/Methoden "exerzieren", wenn eine Exception fliegt gilt der Test als nicht bestanden.
 

tfa

Top Contributor
Wenn in der Testmethode eine Exception fliegt, ist der Test automatisch fehl geschlagen. Du musst nichts weiter tun.
 
B

bygones

Gast
schwieriger wirds nur dann, wenn der zu testende Code die Exception abfängt und gütig weitermacht. Dann ists nicht einfach überprüfbar ob diese Exception geworfen wurde.

Ich hoffe mal das ist aber schon gar nicht der Fall, daher siehe die beiden Antworten oben :)
 

turmaline

Bekanntes Mitglied
Wenn in der Testmethode eine Exception fliegt, ist der Test automatisch fehl geschlagen. Du musst nichts weiter tun.

ich finde es aber dass es kein guter Stil ist, wenn eine Testmethode keine assert-Methode hat. So wie jetzt (also ich habe den Test übernommen). Gut ich prüfe nun die Auswirkungen des Aufrufes.

Gruß,
madlena
 
M

maki

Gast
ich finde es aber dass es kein guter Stil ist, wenn eine Testmethode keine assert-Methode hat. So wie jetzt (also ich habe den Test übernommen). Gut ich prüfe nun die Auswirkungen des Aufrufes.
Das ist so falsch, mit Mockobjekten zB. braucht man auch kaum (wenn überhaupt) noch asserts, ausserdem ist eine unerwartete Exception generell ein Fehler in JUnit, oder würdest du lieber asserts schreiben für jede mögliche & unmögliche Exception die auftreten kann?
 
G

Gast2

Gast
Naja... du kannst halt es wrappen:
Java:
boolean exceptionThrown = false;
try{
    myMethod();
  } catch (Exception e) {
    exceptionThrown = true;
  }
assert !exceptionThrown;

Aber ob das mehr Sinn macht oder guter Stil ist?
 

tfa

Top Contributor
ich finde es aber dass es kein guter Stil ist, wenn eine Testmethode keine assert-Methode hat.
Was musst du denn inhaltlich prüfen? Ich meine, was ist die Nachbedingung der Methode? Nur, dass keine Exception fliegt? Ein bisschen wenig.
 
B

bygones

Gast
Naja... du kannst halt es wrappen:
Java:
boolean exceptionThrown = false;
try{
    myMethod();
  } catch (Exception e) {
    exceptionThrown = true;
  }
assert !exceptionThrown;

Aber ob das mehr Sinn macht oder guter Stil ist?
nein...

wenn du explizit eine Exception erwartest dann kannst du das über @Test(expected=IndexOutOfBoundsException.class) annotieren (was aber auch gefährlich ist...).

wenn du keine erwartest, dann brauchst du auch keine logik erstellen, denn wie schon gesagt -> exception == gescheiterter Test.

@topic:
Ohne Mockobjekte sollten asserts in der Methode vorkommen... ja. Das reine Testen ob eine Exception aufkommt ist, wie gesagt, fraglich.
Sobald man mit Mockobkjekten und deren Verhalten arbeitet, so weniger asserts hat man auch und das ist auch gut so ;-)
 

turmaline

Bekanntes Mitglied
hm.. die tests sollen eigentlich prüfen ob die aufrufe KIENE Exception verursachen.
schreibt ihr auch solche tests ohne assert-Methoden?
 
M

maki

Gast
hm.. die tests sollen eigentlich prüfen ob die aufrufe KIENE Exception verursachen.
schreibt ihr auch solche tests ohne assert-Methoden?
Solche tests schreibe ich ehrlich gesagt nie, die sind nicht aussagekräftig/nutzlos und daher Zeitverschwendung.

Tests prüfen ob bestimmte Dinge funktionieren, alles andere (Exceptions etc.) bedeutet dass sie nicht funktinieren -> Test fehlgeschlagen
 
B

bygones

Gast
hm.. die tests sollen eigentlich prüfen ob die aufrufe KIENE Exception verursachen.
schreibt ihr auch solche tests ohne assert-Methoden?
ich würde einen Test schreiben der überprüft dass die Methode a) das tut was sie tun soll bzw b) dass ds zurückkommt was zurückkommen soll.
Fliegt eine Exception, so gilt der Test auch als fehlgeschlagen. Ergo keine Exception + Überprüfung => erfolgreicher Test.

also somit ist die überprüfung, dass KEINE exception geworfen wurde in einem "normalen" Test schon inkludiert.

Ausnahme: siehe meinen ersten Beitrag
 

turmaline

Bekanntes Mitglied
alles klar. wie ich oben schon geschrieben habe, ich erweitere die Test-Methoden gerade und prüfe ob bestimmte Dinge passieren, die passieren sollen (das meinte ich mit Auswirklungen eines Aufrufes, vielleicht wurde ich falsch verstanden??).

dake für die Antworten!
 
G

Gast2

Gast
Also du willst testen ob auch wirklich eine Exception fliegt wenn du ein bestimmte Parameter übergibst? Dann könntest du das so machen wie ich oben gemacht habe oder über die Annotation wie bygones gesagt hat. Die Frage ist was du überhaupt testen möchtest?

Um möglichst gute Testabdeckung zu erreichen bietet es sich an Coverage Tools wie z.B. Cobertura zusätzlich zu verwenden.
 

turmaline

Bekanntes Mitglied
die intension dieser tests war und bleibt, zu überprüfen, ob ein bestimmter methodenaufruf normal funktioniert und keine exce geworfen werden (das habe ich bereits oben geschrieben).

Beispiel:

Java:
@Test
    public void test() throws Exception {
        _syncClient.getLastFeedbackSyncDate(USER);
    }

Für mich ergeben solche tests nicht so viel sinn, deswegen schriebe ich nun so:

Java:
@Test
    public void test() throws Exception {
        assertNotNull(_syncClient.getLastFeedbackSyncDate(USER));
    }
 

turmaline

Bekanntes Mitglied
das glaube ich nicht dass das misverständnis auf meiner seite ist, aber es ist völlig egal. es wäre mir jetzt komplizierter das zu "beweisen", als es sein zu lassen :D

was wäre für Dich "gut genug" für diesen Test?
 
G

Gast2

Gast
Das Objekt was aus der Methode zurückgegeben wird noch untersuchen ob es dem entspricht was erwartet wird.
 

turmaline

Bekanntes Mitglied
das stimmt würde ich im normallfall auch tun, da aber es gar nicht untersucht werden soll (frag mich nicht warum), begnüge ich mich mit einfachem assertNotNull
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U JUnit testen auf SomeException 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 JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
G Testen mit JUnit Java Basics - Anfänger-Themen 4
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
T Junit --Exception testen Java Basics - Anfänger-Themen 15
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
xehpuk In JUnit über eigenen Thread testen Java Basics - Anfänger-Themen 3
B OOP Testen - JUnit Java Basics - Anfänger-Themen 30
G Methoden mit Junit testen? Java Basics - Anfänger-Themen 2
A mit Junit testen Java Basics - Anfänger-Themen 7
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 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
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
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
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
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
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
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
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 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
T Junit Tests Java Basics - Anfänger-Themen 7
I JUnit Datapoints für mehrere Testklassen Java Basics - Anfänger-Themen 4
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

Ähnliche Java Themen

Neue Themen


Oben