Spring TestContext Framework是spring-test模块中提供的一个测试框架,能够用于单元测试和集成测试。
为了与已有的JUnit 4 (JUnit 4.12+)和TestNG测试框架集成使用,Spring TestContext Framework还提供了如下集成的支持。
1. Spring JUnit 4 Runner,用以全面集成JUnit 4
- @RunWith(SpringJUnit4ClassRunner.class)
- @RunWith(SpringRunner.class)
个人感觉SpringRunner名称简短易记,推荐使用。
@RunWith(SpringRunner.class)
@TestExecutionListeners({})
public class MyTest {
@Test
public void testMethod() {
// execute test logic...
}
}
2. Spring JUnit 4 Rules
- org.springframework.test.context.junit4.rules.SpringClassRule
- org.springframework.test.context.junit4.rules.SpringMethodRule
SpringRunner需要依赖于org.junit.runner.Runner;而这里的两个Rule无需依赖org.junit.runner.Runner。即测试用例中无需@RunWith(SpringRunner.class),这样就可以在Spring TestContext Framework中结合使用其他的第三方定制的Runner,如MockitoJUnitRunner等。
另外,虽然这里是提供了两个Rule,但是一个是作用于类,另一个是作用于类中的方法,所以在测试用例中,两者往往结合在一起使用。
@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...
}
}
3. JUnit 4测试用例的辅助类
- org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests
- org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests
4. TestNG测试用例的辅助类
- org.springframework.test.context.testng.AbstractTestNGSpringContextTests
- org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests
参考链接:
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#testcontext-framework