带有PowerMock的TestNG DataProvider

时间:2012-01-15 22:18:49

标签: unit-testing mocking testng powermock

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

问题:使用PowerMock时是否有使用TestNG的DataProvider的工作?

2 个答案:

答案 0 :(得分:3)

有一种解决方法。参数化测试方法的所有参数必须声明为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()}
    };
}

答案 1 :(得分:0)

在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/

相关问题