有人知道如何解决这个问题吗?
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(Parametrized.class)
@ContextConfiguration("/META-INF/blah-spring-test.xml")
public class BlahTest
..
我希望进行一个Spring自然测试,同时希望将其参数化以避免代码重复...
有人知道如何解决这个问题吗?
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(Parametrized.class)
@ContextConfiguration("/META-INF/blah-spring-test.xml")
public class BlahTest
..
我希望进行一个Spring自然测试,同时希望将其参数化以避免代码重复...
如评论帖子中所述,您不能使用两个运行程序。您应该使用Parameterized
运行程序,并使用Spring的TestContextManager来加载Spring上下文。
@Before
public void before() throws Exception {
new TestContextManager(getClass()).prepareTestInstance(this);
}
在John B的答案的基础上,使用TestContextManager
,我们还可以在其上调用beforeTestMethod()
和afterTestMethod()
来更好地模拟SpringJUnit4ClassRunner
的行为(例如使用@Sql
加载数据库)。
这些方法需要一个Method
参数,因此可以利用JUnit4的TestName
规则来获取当前测试方法的名称,然后通过反射检索它。
private static TestContextManager springTestContext
= new TestContextManager(BlahTest.class);
@Rule
public TestName testName = new TestName();
@Before
public void before() throws Exception {
springTestContext.prepareTestInstance(this);
springTestContext.beforeTestMethod(this,
getClass().getMethod(testName.getMethodName()));
}
@After
public void after() throws Exception {
springTestContext.afterTestMethod(this,
getClass().getMethod(testName.getMethodName()), null);
}