Problem mit EasyMock und Exception

DarkGuardian

Mitglied
Hallo zusammen

Ich arbeite gerade an Unittests und nutze dabei EasyMock. Allgemein klappt das auch recht gut, aber nun hänge ich an einem Problem, welches ich nicht verstehe.

An einer Stelle in meiner TestUnit-Klasse muss ich einen expect-Aufruf mit einem Try-Catch-Block umfassen. Die hier genutzte Methode des Interfaces hat eine Throws-Anweisung und genau eine solche Exception wird im Catch-Block gefangen.

Kann mir jemand sagen, warum das passiert? Ich dachte, dass ich mit der Expect-Methode nur das Verhalten des Mocks bestimme. Wieso wird denn dann die Exception ausgelöst?
 
Java:
		try {
			expect(portType.getCustomerData(customerDataRequest)).andReturn(customerDataResponse);
		} catch (GetCustomerDataFaultMsg e) {
			e.printStackTrace();
		}

Und über einen Breakpoint im Catchblock merke ich, dass er dort landet. Mich wundert auch, dass mir die IDE vorschreibt, dass dieser Anteil in einem Try-Catch-Block sein muss. Das klingt für mich nicht logisch.

Aber ich bin gerade über ein anderes Problem gestoßen, woran ich erst einmal arbeite. Leider auch im Zusammenhang mit EasyMock. Gibt es bei Version 3.0 Probleme, wenn man Interfaces und Klassen gemeinsam mockt?
 
Mich wundert auch, dass mir die IDE vorschreibt, dass dieser Anteil in einem Try-Catch-Block sein muss. Das klingt für mich nicht logisch.
Hört sich imho danach an als ob du in der Testmethdoen deklaration throws Exception vergessen hast 😉

Aber ich bin gerade über ein anderes Problem gestoßen, woran ich erst einmal arbeite. Leider auch im Zusammenhang mit EasyMock. Gibt es bei Version 3.0 Probleme, wenn man Interfaces und Klassen gemeinsam mockt?
k.A., ich verwende JMock2 🙂
 
Hört sich imho danach an als ob du in der Testmethdoen deklaration throws Exception vergessen hast 😉

Natürlich kann ich ein
Java:
throws Exception
einfügen, um diese Meldung zu entfernen. Aber es klingt für mich nicht sehr logisch, dass die Meldung überhaupt erscheint. Ansich wird die Methode nicht aufgerufen. Es wird damit nur angezeigt, welche Methode gemockt werden soll.

Oder liegt das eher am Compiler? Vielleicht kann der ja nicht erkennen, dass die Methode nicht aufgerufen wird. Dann wäre es natürlich verständlich.
 
Die ist klar dass sobald eine Methode bekannt gibt checked Exceptions zu werfen, muss die aufrufende Methode die Exception behandeln, entweder durch einen try/catch Block oder indem sie selbst throws deklariert.
Lies dir doch mal was zum Java Exceptionhandling durch 😉

In Unittests macht man kein Exceptionhandling (ausser von erwartetetebn Exceptions), jede auftretende Exception bedeutet: Test fehlgeschlagen
 
Java:
Aber ich bin gerade über ein anderes Problem gestoßen, woran ich erst einmal arbeite. Leider auch im Zusammenhang mit EasyMock. Gibt es bei Version 3.0 Probleme, wenn man Interfaces und Klassen gemeinsam mockt?[/QUOTE]

Da habe ich keine Probleme hier, aber für das Mocken von Klassen muss man noch cglib und Objenesis einbinden:
[Quote=http://www.easymock.org/EasyMock3_0_Documentation.html]cglib (2.2) and Objenesis (1.2) must be in the classpath to perform class mocking[/Quote]
 

Zurück
Oben