1

我正在使用 Mockito 和 TestNG 进行单元测试。我有要模拟的静态方法,我尝试过 PowerMock。不幸的是,我无法在 TestNG 中使用 DataProvider 和 PowerMock。

问题:在使用 PowerMock 时是否可以使用 TestNG 的 DataProvider?

4

2 回答 2

7

有一种解决方法。参数化测试方法的所有参数必须声明为 Object 类型。在测试方法主体中,您需要将它们转换为实际类型。

@Test(dataProvider = "data")
public void testMethodThatUsesPowerMock(Object parameter) {
    mockStatic(SomeClass.class);
    DataType param = (DataType) parameter;
    // ... 
}

@DataProvider
public Object[][] data(){
    return new Object[][]{
            new Object[]{new DataType()}
    };
}
于 2014-04-16T14:13:46.400 回答
-1

在 PowerMockRunner 的顶部,您可以使用 PowerMockRunnerDelegate 的 DataProviderRunner,并且可以隐式转换测试函数参数。

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(DataProviderRunner.class)
// ...
public class Test {
// ...
}

https://blog.jayway.com/2014/11/29/using-another-junit-runner-with-powermock/

于 2019-06-05T18:46:11.147 回答