我有一个主测试类(A)和另一个(B)从它延伸。
A有一个@RunWith(SpringJUnit4ClassRunner.class)
注释来初始化它。
我需要在B上使用@RunWith(JUnitParamsRunner.class)
注释。
但似乎我无法做到这两点。有没有一种方法可以在没有@RunWith
注释的情况下参数化测试套件?
另一种解决方案是使用
testContextManager = new TestContextManager(AbstractInvoiceCreationModuleTest.class);
testContextManager.prepareTestInstance(this);
但我不能在@BeforeClass
方法中写这个,因为它是静态的,不允许使用它。我不希望在@Before
方法中编写上面的代码,因为类将在每个测试方法之前初始化。许多测试类都来自A。
可以做些什么?
答案 0 :(得分:2)
Spring在版本4.2中添加了对基于@Rule的Spring上下文支持的支持。
该文档的示例:
// Optionally specify a non-Spring Runner via @RunWith(...)
@ContextConfiguration
public class IntegrationTest {
@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
@Test
public void testMethod() {
// execute test logic...
}
}
答案 1 :(得分:1)
您可以使用规则代替SpringJUnit4ClassRunner.class
:http://www.alexecollins.com/tutorial-junit-rule/
答案 2 :(得分:0)
我不知道具体的情况(春季测试跑步者),但我有一个类似的情况,最终创建了自己的跑步者。