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

时间:2010-03-16 13:03:15

标签: java junit powermock parameterized

我一直试图弄清楚如何在Junit4中与PowerMock一起运行参数化测试。问题是要使用PowerMock,您需要使用

装饰您的测试类
@RunWith(PowerMockRunner.class)

并使用参数化测试,你必须用

装饰
@RunWith(Parameterized.class)

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

@RunWith(PowerMockRunner.class)
class MyTestClass {
     @RunWith(Parameterized.class)
     class ParamTestClass {
          // Yadayada
     }
}

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

更新 对于未来的googlers,也会看到:Using PowerMock without the RunWith?

4 个答案:

答案 0 :(得分:25)

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

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)

答案 1 :(得分:15)

是的,如果使用JUnit 4.7 +,可以使用PowerMock Rule

答案 2 :(得分:0)

你不能同时使用两个班级跑步者,所以你一定要编写自己的测试跑步者来实现这一目标。

我对Powermock一无所知,但经过10秒的研究,看起来一个解决方案就是编写一个使用powermock的类加载器并运行参数化测试的测试运行器。如果您可以从自定义测试运行器中找出如何委托参数化测试运行器,那么这可能是您最好的选择。

答案 3 :(得分:0)

以下解决方案对我有用!

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)