JUnit: Testen ob bestimmte Exception nicht auftritt

aze

aze

Bekanntes Mitglied
Hi

Kann man mit JUnit auch testen ob eine ebstimmte Exception nicht geworfen wird ?

Schöne Grüße

Aze
 
B

bygones

Gast
wenn eine exception geworfen wird, muss das System das doch wissen ?!

was machst du mit der Exception ansich - einfach schlucken ?
 
aze

aze

Bekanntes Mitglied
Also es ist so:

Ich habe einen Sicherheitsaspekt geschrieben, der Alarm schlägt wenn bestimmte Benutzer bestimmte Funktionen aufrufen.Das zu testen ist ja leicht mit @Test[expected=MySecurityException].

Wie ist jetzt aber der Umkehrfall ? Also ein Benutzer ruft eine zulässige Funktion auf. Da möchte man ja testen ob dies nicht die Exception "MySecurityexception" erzeugt.
 
M

maki

Gast
Wenn eine Exception auftritt ist der test fehlgeschlagen, ausser du erwartest die Execption.
 
faetzminator

faetzminator

Gesperrter Benutzer
Java:
try {
    // ...
catch (MySecurityException e) {
   fail("this should not happen");
}
Aber das macht wirklich kein Sinn...
 
B

bygones

Gast
du stellst den relevanten code in ein try und faengst deine Exception ab...

Java:
@Test
public void foo() {
   try {
      // do something
   }
   catch(MySecurityException e) {
     // this is allowed here
   }
}

btw - ich wuerde von @Test[expected=MySecurityException] abstand halten, wenn dein Test nicht ein Einzeiler ist oder sie so spezifisch ist dass sie nur an einer Stelle auftreten kann.
Wenn die Exception in Zeile 5 oder so erwartet wird, aber aufgrund eines anderen Fehlers schon in Zeile 2 geschieht hast du nur einen scheinbar gruenen Test.

Ich nutz da lieber noch die try/catch mit fail Umsetzung.

btw2 - Mockito zb kann [c]assertThat(e).isInstanceOf(IOException.class);[/c]
 
Zuletzt bearbeitet von einem Moderator:
tfa

tfa

Top Contributor
Es ist doch aber genau so ein Fehler, wenn die Methode wegen jeder anderen, unbehandelten Exception abbricht. Und den findet JUnit ob du willst oder nicht.
 
E

Empire Phoenix

Top Contributor
Klingt nach typischen fall von, aber die Designrichtlinien sagen, dass wir
 
aze

aze

Bekanntes Mitglied
Es ist doch aber genau so ein Fehler, wenn die Methode wegen jeder anderen, unbehandelten Exception abbricht. Und den findet JUnit ob du willst oder nicht.

Richtig.Aber das soll woanders getestet werden.

Ich will einfach nur testen OB die Methode ausgeführt wird und nicht WIE.Wenn jemand eine bessere Lösung kennt dann bin ich auch dafür dankbar !
 
B

bygones

Gast
ist schwer zu sagen wenn man den code an sich nicht kennt bzw die Gegebenheiten.

Unter der Annahme es ist ein valider Fall kannst du mock bzw spy frameworks nutzen (zb Mockito) und dann verifizieren, dass bestimmte methoden aufgerufen wurden.
 
N

nillehammer

Gast
Eine Methode hat i.d.R. Seiteneffekte, die man beobachten kann, z.B.:
- Sie liefert einen return-Code
- Sie ändert eine Variable (entweder als Parameter übergeben oder in einer Instanz)
- Sie schmeißt eine Exception.
Um herauszufinden, OB eine Methode aufgerufen wurde, musst Du auf einen dieser Seiteneffekte testen. Das setzt natürlich voraus, dass Du irgendwie an diese Seiteneffekte "herankommst". Wenn Du das nicht kannst, ist die Methode schlicht nicht (Unit-)testbar.
 
N

nillehammer

Gast
tfa hat gesagt.:
Also das sind nun wirklich keine "Seiten-Effekte".
Was wäre denn ein besseres Wort? Ich wollte halt damit ausdrücken, dass man nach dem Ablauf einer Methode i.d.R. an einer bestimmten Stelle außerhalb der Methode Effekte beobachten kann.
bygones hat gesagt.:
das stimmt so nicht - wie oben geschrieben mit entsprechenden Spyframeworks ist es moeglich.

Man testet in dem Fall keine Logik seiner Unit, aber sozusagen die Choreografie
Vielleicht fasse ich den Begriff "Unit-Test" etwas zu eng, aber wenn ich externe Werkzeuge benutzen muss, würde ich nicht mehr von Unit-Tests sprechen.
 
N

nillehammer

Gast
nillehammer, ohne mocks hat man meist keine echten unittests
Das stimmt natürlich. Aber ich habe die immer als Einfachst-Implementierungen einer Schnittstelle gesehen, die die zu testende Unit bedient/benutzt. So "magisches" Zeugs wie Methodenaufrufe zu erfassen habe ich nie als deren Aufgabe angesehen. Aber vielleicht fasse ich auch den Begriff "Mock" zu eng. Auf jeden Fall sollte ich mich wohl mal mit Mockito etwas näher befassen.
 
B

bygones

Gast
Vielleicht fasse ich den Begriff "Unit-Test" etwas zu eng, aber wenn ich externe Werkzeuge benutzen muss, würde ich nicht mehr von Unit-Tests sprechen.
Ein Unit Test heisst einfach du testest eine Einheit abgekoppelt von deren Abhaengigkeiten. Wenn du es schaffst durch einfach Instanzierung oder Dummy implementierungen diese Entkoppelung zu erreichen - hervorragend.
Bei allem anderen kommen dann mock frameworke ins spiel, weil man eben ansonsten nicht mehr units testen kann.

mocks an sich testen auch nicht methoden aufrufe, manche frameworks koennen das eben.
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
B JUnit Zufalls Operation testen Allgemeine Java-Themen 1
L JUnit - automatisiertes vs. manuelles Testen? Allgemeine Java-Themen 3
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
A Junit Exceptions testen Allgemeine Java-Themen 3
P Testen mit JUnit Allgemeine Java-Themen 8
G testen mit JUnit? Allgemeine Java-Themen 3
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
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
K Input/Output JUnit: Log Inhalte, falsche Assertion Allgemeine Java-Themen 2
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
E JUnit wie Testergebnisse pro Test ("Test Report") erhalten? 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
M JUnit Test Suites Allgemeine Java-Themen 2
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
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
P Klassen Junit test funktioniert nicht... Allgemeine Java-Themen 11
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
U Fehler: Hauptklasse org.junit.runner.JUnitCore konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
J JUnit-Tests Zeichensatzproblem ? Allgemeine Java-Themen 2
J JUnit, TestCase vs "einfacher" Test Allgemeine Java-Themen 3
S [JUnit] Name von TestCase bekommen Allgemeine Java-Themen 4
1 JUnit Test Suit Allgemeine Java-Themen 2
T Junit-Tests in Java Klasse ausführen Allgemeine Java-Themen 26
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
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
C JUnit und das Zulassen von RuntimeExceptions Allgemeine Java-Themen 5
jmar83 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
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
D junit - frage zu fixtures/test suites Allgemeine Java-Themen 11
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
G JUnit Test Allgemeine Java-Themen 5
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
N ClassNotFound Exception bei JUnit Test? Allgemeine Java-Themen 2
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
GilbertGrape Warum schlägt JUnit-Test fehl? Allgemeine Java-Themen 19
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
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
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
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
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
H JUnit Allgemeine Java-Themen 5
N Problem mit Ant und JUnit Allgemeine Java-Themen 5
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
ZeusSeinGrossopa Testen ob neuer Tag beginnt Allgemeine Java-Themen 37
S Habt ihr eine Idee wie man Serializierung testen kann..? Allgemeine Java-Themen 6
B Eclipse WebSocket programmiert, kann es leider nicht testen. Allgemeine Java-Themen 15
perlenfischer1984 TestNG - Enum testen Allgemeine Java-Themen 1
perlenfischer1984 Testng : Funktion mit mehreren Parametern testen Allgemeine Java-Themen 5
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7

Ähnliche Java Themen

Anzeige

Neue Themen


Oben