我一直试图弄清楚如何在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?
答案 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)