2012-02-29 58 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