Tôi đang cố gắng tìm hiểu về các thư viện mô phỏng khác nhau và PowerMock (cụ thể là phần mở rộng EasyMock) tiếp theo trong danh sách. Tôi đang cố gắng để giả lập một constructor và các ví dụ được cung cấp không có phản ứng tương tự khi tôi cố gắng để tái tạo chúng. Theo như tôi có thể nói, nó không bao giờ mocks constructor và chỉ tiến hành như thể nó đã được bình thường.Kỳ vọng của PowerMockNew() không phải là chế nhạo một hàm tạo như mong đợi
Đây là lớp thử nghiệm:
@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);
}
}
tôi đã cố gắng thay thế các "thử nghiệm" với một EasyMock.isA (String.class), nhưng nó mang lại kết quả tương tự.
Đây là 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";
}
}
Các "Writer" là gì khác hơn là một cái vỏ của một lớp:
public class Writer {
public Writer(String s) throws IOException {
}
public Writer() throws IOException{
}
}
Khi thử nghiệm được chạy, nó in ra "trở lại mà không cần ném ", cho thấy ngoại lệ không bao giờ bị ném.
Cảm ơn, tôi đã không nhận ra rằng đối tượng được gọi là hàm tạo cần được bao gồm. – AdamSpurgin
Tôi chạy vào cùng một vấn đề ... Chính xác những gì tôi đã mất tích :) –
Cảm ơn bạn rất nhiều, tôi đã vật lộn trong một thời gian dài cho đến khi tôi tìm thấy câu trả lời này. – OQJF