Junit参数化测试与Powermock一起 - 如何?

And*_*son 40 java junit parameterized powermock

我一直试图弄清楚如何在Junit4中与PowerMock一起运行参数化测试.问题是要使用PowerMock,你需要用你的测试类来装饰

@RunWith(PowerMockRunner.class)
Run Code Online (Sandbox Code Playgroud)

并使用参数化测试你必须装饰

@RunWith(Parameterized.class)
Run Code Online (Sandbox Code Playgroud)

从我所看到的,他们似乎相互排斥!?这是真的?有没有办法解决?我试图在运行PowerMock的类中创建一个参数化类; 这样的事情:

@RunWith(PowerMockRunner.class)
class MyTestClass {
     @RunWith(Parameterized.class)
     class ParamTestClass {
          // Yadayada
     }
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这并没有太大的好处...... ParamTestClass仍然没有PowerMock支持(也许不是那么令人惊讶)...而且我有点想法,所以任何帮助都非常感谢!

更新: 对于未来的googlers也会看到:在没有RunWith的情况下使用PowerMock?

小智 29

我遇到过同样的问题.不幸的是,由于我拥有的JVM,它不会让我使用PowerMock规则.而不是我使用RunnerDelegate的规则.

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
Run Code Online (Sandbox Code Playgroud)


小智 15

是的,如果您使用JUnit 4.7+,则可以使用PowerMock 规则.