Я пытаюсь изучить всевозможные издевательские библиотеки и PowerMock (в частности, расширение EasyMock), следующий на список. Я пытаюсь высмеять конструктор, и приведенные примеры не имеют такого же ответа, когда я пытаюсь их воспроизвести. Насколько я могу судить, он никогда не издевается над конструктором и просто работает так, как если бы это было нормально.
Это тестовый класс:
@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);
}
}
Я попытался заменить "тест" на EasyMock.isA(String.class), но он дал те же результаты.
Это 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";
}
}
"Писатель" - не что иное, как оболочка класса:
public class Writer {
public Writer(String s) throws IOException {
}
public Writer() throws IOException{
}
}
Когда тест запускается, он печатает "возвращенный без броска", указав, что исключение никогда не было брошено.