PowerMock ist expectNew() ist nicht lustig, einen Konstruktor als erwartet
Ich versuche zu lernen, die ins und outs der verschiedenen mocking-libraries und PowerMock(speziell die EasyMock-Erweiterung) steht als Nächstes auf der Liste. Ich bin versucht, zu verhöhnen, einen Konstruktor und die Beispiele nicht die gleiche Antwort, wenn ich versuche, Sie zu replizieren. Soweit ich sagen kann, es ist nie verhöhnt den Konstruktor und nur Erlöses, als wäre es normal.
Dies ist die test-Klasse:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Writer.class})
public class FaultInjectionSituationTest {
@Test
public void testActionFail() throws Exception {
FaultInjectionSituation fis = new FaultInjectionSituation();
PowerMock.expectNew(Writer.class, "test")
.andThrow(new IOException("thrown from mock"));
PowerMock.replay(Writer.class);
System.out.println(fis.action());
PowerMock.verify(Writer.class);
}
}
Habe ich versucht, anstelle der "test" mit einem EasyMock.isA(String.class), aber es lieferte die gleichen Ergebnisse.
Dies ist die FaultInjectionSituation:
public class FaultInjectionSituation {
public String action(){
Writer w;
try {
w = new Writer("test");
} catch (IOException e) {
System.out.println("thrown: " + e.getMessage());
return e.getLocalizedMessage();
}
return "returned without throw";
}
}
"Schriftsteller" ist nichts mehr als eine Hülle der Klasse:
public class Writer {
public Writer(String s) throws IOException {
}
public Writer() throws IOException{
}
}
Wenn der test ausgeführt wird, druckt es aus "zurück, ohne zu werfen", gibt die Ausnahme war nie geworfen.
InformationsquelleAutor AdamSpurgin | 2012-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bereiten Sie die Klasse, die den Aufruf der Konstruktor als gut, so PowerMock weiß, zu erwarten, dass sich verspottet Konstruktor-Aufruf. Aktualisieren Sie Ihren code mit den folgenden:
Ich lief in das gleiche Problem... Genau das, was mir fehlte 🙂
Ich danke Ihnen sehr, ich kämpfte für eine lange Weile, bis ich fand diese Antwort.
InformationsquelleAutor rrufai
Müssen Sie zuerst erstellen Sie ein mock-Objekt:
sorry, ich sehe, was Sie versuchen zu tun. Ich habe gerade versucht deinen code auf JUnit 4 und druckt es aus "geworfen, aus dem mock" (was man erwarten würde). Sind Sie mit TestNG durch Zufall? Ich bin nicht vertraut mit TestNG, aber bei mir lief es mit TestNG, ich habe "zurück, ohne zu werfen"
Ich bin mit Junit4. Ich kann nicht an nichts denken dazu führen würde, dass es nicht funktioniert.
Ich glaube nicht, dass es etwas falsch mit Ihrem code (wie konnte ich die gewünschte Ausgabe erhalten). Wie sind Sie mit JUnit? Von einer IDE oder Kommandozeile?
Ich habe beides ausprobiert. Ich bin mir reichte es zu einem Kollegen zu laufen, auf dem eigenen Rechner, vielleicht hilft beleuchten das Thema.
InformationsquelleAutor fo_x86