2012-02-29 94 views
9

我想在同一个JUnit 4测试中使用Arquillian和PowerMock的功能。在同一JUnit测试中同时使用Arquillian和PowerMock

的问题是,这两种产品都是基于JUnit Runner S的应该@RunWith使用,而这是不可能在同一个测试类使用多个@RunWith,或者把多个Runner的类在同一个@RunWith注解。

你知道有什么办法吗?

+0

谢谢,我已经编辑我的问题,以便更精确。 – 2012-02-29 10:12:46

+0

马修,你可以请看看我的问题http://stackoverflow.com/questions/30799352/how-to-use-powermock-with-arquillian – 2015-06-12 12:25:53

回答

12

如果使用PowerMockRule(这是一个TestRule)可以使用PowerMock不使用亚军。从PowerMockRule:

由于1.4版本有可能使用JUnit的 规则,而不是使用PowerMockRunner和RunWith注解来引导PowerMock。 这允许您使用其他JUnit跑步者,同时仍受益于PowerMock的 的功能。您可以通过指定做到这一点:

@RunWith(Arquillian.class); 
public class MyTest { 
    @Rule 
    PowerMockRule rule = new PowerMockRule(); 

    // Tests goes here 
    ... 
} 

又见答案Junit Parameterized tests together with Powermock - how?和PowerMock谷歌组在以下主题:Using PowerMock without the RunWith?

+1

@Mattew法韦尔:这不适合我。我得到:'java.lang.IllegalStateException:PowerMockRule只能与系统类加载器一起使用,但是由Module Module Loader'的ModuleClassLoader加载Module“deployment.test.war:main”加载。我能做些什么来一起使用Arquillian和PowerMock? – badera 2016-05-13 05:42:05

2

不,你要么需要:

  • 使用一个,并创建一个测试基类,做你想要的其他运动员做的事情。
  • 将您的测试分为多个测试,每个测试使用不同的跑步者。
0

JUnit4仅支持一个@RunWith注释,并且JUnit4的@RunWith注释不接受多个跑步者。

参考:project13