Junit Test erkennt Exception nicht..

Status
Nicht offen für weitere Antworten.

pun

Mitglied
Bin grad echt ratlos...
Hier mal etwas Code...
Ihr müsst nicht viel lesen, nur soviel:
Die Bedingung, die die RuntimeException werfen soll, wird in einem JUnit Test offensichtlich erfüllt,denn ich bekomme über das sout meine Meldung ausgegeben ("RuntimeException")

[HIGHLIGHT="Java"]public static String expand(String input) throws RuntimeException {
String test="";

for (int i=0;i<input.length();i++) {
try {
final char chr = input.charAt(i);
/* Marker found! */
if (chr == 'Z') {
i++;
char zweiterchr = input.charAt(i);
if ((int)(zweiterchr) <48 || (int)(zweiterchr)>57) {
System.out.println("RuntimeException!");
throw new RuntimeException();

}
int counter = (int)(input.charAt(i)-'0'); // this one has to be of type counted


i++;
for (int j=0;j<counter;j++) { // repeat *counted* times
test += input.charAt(i); // this one has to be the compressed char
}
}
else // no marker found...return input
test += chr;
}
catch (Exception e) {
break; // end of string reached already !
}
}
return test;
}[/HIGHLIGHT]


Mein JUnit Test:
[HIGHLIGHT="Java"]@Test(expected=RuntimeException.class) public void expand5() {
RunlengthCompressor.expand("ZbB");
}[/HIGHLIGHT]

Dies hier ist der Test,der die Bedingung erfüllt, es wird auch "RuntimeException!" über sout ausgegeben...

Trotzdem erhalte ich immer den Fehler, dass die Exception, die erwartet wird, nicht kommt.
Warum nicht?
 

Wildcard

Top Contributor
Du wirfst die Exception zwar, aber nicht nach aussen, da du sie selbst fängst.
[HIGHLIGHT="Java"] catch (Exception e) {
break; // end of string reached already !
}[/HIGHLIGHT]
Sowas tut man übrigens niemals! Exceptions dürfen nicht für die Programmsteuerung verwendet werden.
 

0x7F800000

Top Contributor
Dies hier ist der Test,der die Bedingung erfüllt, es wird auch "RuntimeException!" über sout ausgegeben...
normalerweise sollte das programm sowas nicht über System.out ausgeben, ich hoffe das ist nur zu test?
Trotzdem erhalte ich immer den Fehler, dass die Exception, die erwartet wird, nicht kommt.
Warum nicht?
Wie denn? Die wird doch in Zeile 27 wieder verschluckt :autsch:

Sonstige bemerkungen:
1) omfg
2) RuntimeExceptions sollte man nicht selbst werfen
3) RuntimeExceptions sollte man auf keinen Fall abfangen, die sind dazu da um auf grobe Programmierfehler hinzuweisen, beim normalbetrieb sollten die nicht vorkommen
4) Man sollte auf gar keinen Fall einfach nur "Exception" abfangen
5) Exceptions sollte man jetzt wirklich nicht zur kontrolle des Programmflusses einsetzen. Ich könnte mich irren, aber imho. sollte da irgendein break auch schon reichen
 

0x7F800000

Top Contributor
Ja, natürlich, sowas wie IllegalArgumentException und IndexOutOfBounds exception bei eigenen Datenstrukturen sollte man natürlich schon werfen, da hab ich ein wenig übertrieben, sorry.:oops:
auch nicht richtig
Wo man die abfangen sollte, kann ich mir grad irgendwie nicht vorstellen... Also, zumindest die oft auftretenden Vertreter wie ArithmeticException , ClassCastException , ConcurrentModificationException , IllegalArgumentException , IllegalStateException , IndexOutOfBoundsException , NegativeArraySizeException , NullPointerException , SecurityException , UnsupportedOperationException die will ich doch normalerweise ganz klar und deutlich in dicker roter schrift sehen, weil sie normalerweise darauf hinweisen, dass man mist gebaut hat :bahnhof: Oder nicht? ???:L

*jaja, Pauschalurteile ist was ausschließlich für Vollidioten, schon klar :D*
 

Wildcard

Top Contributor
Deine Aussage deckt sich ein Stück weit schon mit der ursprünglichen Intention der Exceptions, aber die Checked Exceptions kamen ein wenig in Verruf und viele Experten raten mittlerweile eher dazu nur noch unchecked Exceptions zu verwenden. Egal welche Ansicht man persönlich vertritt (denn beide Ansätze haben Vor- und Nachteile), fakt ist, es wird heftig debattiert was der richtige Weg ist und solange es *den* richtigen Weg nicht gibt, musst du in jedem Fall beide Fälle berücksichtigen und unchecked Exceptions als gleichwertig behandeln.
 

0x7F800000

Top Contributor
fakt ist, es wird heftig debattiert was der richtige Weg ist und solange es *den* richtigen Weg nicht gibt, musst du in jedem Fall beide Fälle berücksichtigen und unchecked Exceptions als gleichwertig behandeln.
Okay okay, dann ist meine 3) Aussage nicht als "absolute Wahrheit", sondern vielleicht als "tendentiell eher richtig" zu betrachten, damit könnte ich leben. :oops:
 

Wildcard

Top Contributor
Okay okay, dann ist meine 3) Aussage nicht als "absolute Wahrheit", sondern vielleicht als "tendentiell eher richtig" zu betrachten, damit könnte ich leben. :oops:

Nun, was du tun musst, ist die Doku/Java-Doc der von dir verwendeten Libraries zu lesen und zu verstehen wie die Library Exceptions einsetzt. Anhand dessen, entscheidest du was man besser fängt, und was nicht.
Also: nicht blind auf das throws verlassen, sondern lesen was die Methode zu sagen hat und dann festlegen was du behandeln willst/kannst. RuntimeExceptions zu fangen ist völlig valide.
 

pun

Mitglied
Ich weiß, dass man nicht einfach jede Exception fangen sollte, die Zeile hab ich gar nicht mehr beachtet..
War nur ursprünglich so, dass ich nicht wusste welche Exception ich fangen will, als ich die Zeile geschrieben habe..

Und dass eine RuntimeException geworfen werden soll hab ich nicht willkürlich so gewählt, dass wollte unser Prof so..
Selbiges gilt für die Kontrolle des Programmablaufs..auch so gewollt.

Trotzdem danke für die Hilfe, das Problem war natürlich das Abfangen,was ich gar nicht mehr beachtet hatte...

/edit

jap das sout war nur zum test
 
Zuletzt bearbeitet:

pun

Mitglied
Die Klasse RunlengthCompressor definiert zwei statische Methoden, compress und expand . compress komprimiert Text optimal, ex pand expandiert ihn wieder. Beide Methoden akzeptieren einen String Parameter und liefern ein String Ergebnis. Sie werfen eine RuntimeException , wenn der übergebene String nicht den in der Grammatik festgelegten Aufbau hat.

So war das da gestanden
 

0x7F800000

Top Contributor
Ja gut, so wie es da steht, sollen die methoden bei ungültigen Eingaben exceptions werfen, das ist ja Ok. Da steht halt nirgends, dass man exceptions als eine art goto missbrauchen sollte... Mach dieses "catch" aus deinem code weg, dann ist alles in Ordnung.;)
 
S

SlaterB

Gast
3) RuntimeExceptions sollte man auf keinen Fall abfangen, die sind dazu da um auf grobe Programmierfehler hinzuweisen, beim normalbetrieb sollten die nicht vorkommen
es scheint mir noch nicht ganz deutlich geworden:
Ausnahme 1: RuntimeExceptions, die nicht Programmierfehler sind, wie HibernateExceptions und alle anderen User-definierten Exceptions, die 'freundlicherweise' unchecked sind, aber genauso abzufangen sind wie normale Exceptions

Ausnahme 2: selbst NullPointerExceptions & Co. sind an manchen zentralen Stellen abzufangen, etwa um sie zu loggen/ eine rote Lampe in der GUI blinken zu lassen,
ansonsten würde das etwa ein Thread selber bei seinem Abbruch als System.err ausgeben und das wars
 
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
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 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
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
S Junit Test Java Basics - Anfänger-Themen 2
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
T JUnit test failed 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 Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
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
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
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
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
J JUnit Test Java Basics - Anfänger-Themen 2
Houly JUnit Test Suite anlegen Java Basics - Anfänger-Themen 6
G BlueJ jUnit Test Java Basics - Anfänger-Themen 6
V Test mit JUnit verbinden Java Basics - Anfänger-Themen 3
B JUnit Test Klasse Rational Java Basics - Anfänger-Themen 12
C Unsupported major.minor bei jUnit Test Java Basics - Anfänger-Themen 2
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
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
A JUnit testing is inkonsistent Java Basics - Anfänger-Themen 12
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
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
L Junit Testing bei XML? Java Basics - Anfänger-Themen 3
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
A Objekt in Methode zurückgeben, JUnit zeigt Error Java Basics - Anfänger-Themen 2
O JUnit - Objektreferenzen Java Basics - Anfänger-Themen 3
G Testen mit JUnit Java Basics - Anfänger-Themen 4
C JUnit Tests. How to Java Basics - Anfänger-Themen 5
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
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
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
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
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
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 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
S InvocationTargetException bei JUnit Testlauf Java Basics - Anfänger-Themen 2
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
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

Ähnliche Java Themen

Neue Themen


Oben