49

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

@RunWith(PowerMockRunner.class)

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

@RunWith(Parameterized.class)

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

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

但不幸的是,这并没有太大的好处......ParamTestClass仍然不能在 PowerMock 支持下运行(也许并不奇怪)......而且我的想法已经用完了,所以非常感谢任何帮助!

更新: 对于未来的谷歌用户,还请参阅:使用 PowerMock 而不使用 RunWith?

4

4 回答 4

41

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

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
于 2015-05-11T18:45:53.853 回答
16

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

于 2010-04-06T18:06:27.973 回答
-1

您不能同时使用两个类运行器,因此您肯定必须编写自己的测试运行器来实现这一点。

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

于 2010-03-16T13:38:10.357 回答
-1

以下解决方案对我有用!

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
于 2020-05-12T14:30:50.490 回答