2010-03-16 40 views
30

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

@RunWith(PowerMockRunner.class) 

来装饰你的测试类,并使用你有

@RunWith(Parameterized.class) 

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

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

但不幸的是这并没有做太多好...的ParamTestClass仍然不PowerMock支持(不是令人惊讶的也许)运行......而且我有种用完的想法,所以任何帮助,非常感谢!

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

回答

0

不能同时使用两个类选手,所以你肯定是要编写自己的测试运行,以实现这一目标。

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

+0

谢谢您的建议。我会看看powermock的类加载器。 – 2010-03-16 21:45:13

14

是的,这可以通过使用PowerMock Rule如果您使用JUnit 4.7+可用。

16

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

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

有相同的JVM问题,这个解决方案就像一个魅力。干杯! – 2015-07-26 08:56:42