0

我正在为 JUNIT 使用 PowerMocking,而我是 PowerMock 的新手。

我想模拟一个非静态的类。

课堂场景如下。

 public class Export extends MyUtil implements ExportFormatting<DeptSummaryByDCDTO, LmReportsInputDTO>{

    public String createPDF(List<DeptSummaryByDCDTO> summaryDtoList, LmReportsInputDTO inputDto){

     }

    public String createPDF(Map<String, DeptSummaryByDCDTO> paramMap,
        LmReportsInputDTO paramK) {


    }

}

调用类如下。

 public static Response getMultiplePackSku{
       filePath = new Export(inputDto).createPDF(resultList,null);
 }

问题是,

我正在尝试使用 powermock 测试上述类。

任何人都可以告诉如何模拟行filePath .....

4

2 回答 2

2

您需要首先模拟构造函数并返回一个Export模拟。在返回的模拟上,您需要记录对createPDF. 棘手的部分是构造函数模拟。我给你举个例子,希望你能明白:

@RunWith(PowerMockRunner.class) // This annotation is for using PowerMock
@PrepareForTest(Export.class) // This annotation is for mocking the Export constructor
public class MyTests {

    private mockExport;

    @Before
    public void setUp () {
        // Create the mock
        mockExport = PowerMock.createMock(Export.class)
    }

    @Test
    public void testWithConstructor() {
        SomeDtoClass inputDto = PowerMock.createMock(SomeDtoClass.class); 
        PowerMock.expectNew(Export.class, inputDto).andReturn(mockExport);
        PowerMock.replay(mockExport, Export.class);
        expect(mockExport.createPDF(resultList, null);


        // Run the tested method.
    }

}
于 2013-09-18T21:44:05.380 回答
1

以下是如何模拟构造函数调用的描述:MockConstructor

于 2013-09-18T10:44:15.667 回答