我想在同一个JUnit4测试中使用Arquillian和PowerMock的功能。
问题是,这两个产品都是JUnit Runner
s,应该与@RunWith
一起使用,并且这不可能在同一测试类上使用多个@RunWith
,也不可能将多个Runner
s类放在同一@RunWith
注释中。
你知道怎么做吗?
如果使用PowerMockRule(这是一个TestRule),则可以在不使用runner的情况下使用PowerMock。来自PowerMockRule:
自1.4版本以来,可以使用JUnit引导PowerMock规则,而不是使用PowerMockRunner和RunWith注释。这允许您使用其他JUnit运行程序,同时仍然受益于PowerMock的功能。您可以指定:
@RunWith(Arquillian.class);
public class MyTest {
@Rule
PowerMockRule rule = new PowerMockRule();
// Tests goes here
...
}
另请参阅Junit参数化测试和Powermock的答案-如何?以及PowerMock谷歌小组中的以下线程:在没有RunWith的情况下使用PowerMock?。
否,您需要:
- 使用一个并创建一个测试基类,它可以执行您希望另一个运行程序执行的操作
- 将你的测试分成多个测试,每个测试使用不同的跑步者
JUnit4只支持一个@RunWith注释,而JUnit4的@RunWith注释不接受多个runner。
参考:项目13