Assertion Error beim Testen

Dasha

Mitglied
Hi,

Ich schreibe gerade einen Junit Test der testen soll ob auch wirklich eine Exception geworden wird.
Aber beim ausführen kommt immer ein Assertion Error.

Java:
@Test(expected = ArrayIndexOutOfBoundsException.class) 
	public void Test()
	{
                Object[] objectArray = new Object[100];
		objectArray[1] = (Integer)1;
		objectArray[2] = (Integer)2;
		
//		try
//		{
//			objectArray[2] = [objectArray[3];
//			fail("ArrayIndexOutOfBoundsException");
//			...
//		}
//		catch(ArrayIndexOutOfBoundsException e)
//		{
//		}
	}

Es liegt irgendwie an der Struktur der Methode. Auch wenn alles auskommentiert ist wirft er immer noch den Assertion Error und ich kann mir nicht erklären warum.

Die Dokumentation sagt: "Thrown to indicate that an assertion has failed." also "Wird geworfen um zu zeigen dass eine Erwartung falsch war"? Demzufolge kommt oben nie die Exception an bzw. wird überhaupt geworfen?

mfg
 
Boah, dass war wieder mal dumm. Die Exception kann gar nicht geworfen werden.
Mit [100] hab ich ja schon ein Array mit 100 Feldern erstellt.
Erst wenn ich z.B. 101 anspreche kommt die Exception. Nachdem ich die Exception mit throw e; nach oben weiter geworfen habe läuft der Test natürlich auch erfolgreich durch.

Problem an der Sache es muss noch einen Test schreiben, der auch den positiven Fall abtestet
(Es wird ein Array angesprochen der existiert).
Demzufolge wird keine Exception geworfen. Arbeitet man in einen solchen Fall mit Assertion Error (@Test(expected = Assertion.......)).
oder kann man dass expected auch irgendwie negieren? (Es wird nicht erwartet, dass ... geworfen wird)
Oder ist dann der try-catch unnötig, da die Testmethode eh fehlschlägt wenn eine Exception geworfen wird?


mfg
 
wenn keine exception angegeben ist und es wird eine geworfen, so scheitert der test, also musst du im positiven fall nix machen.

Nur - was willst du ueberhaupt testen ? einen JUnit test schreibst du fuer deine Methoden, hier testest du dass java richtig arbeitet bei einer index-ueberschreitung, d.h. du testest eine andere library im grunde.... das ist doch nicht der sinn deines Tests?
 

Neue Themen


Zurück
Oben