简单的Spring集成测试
集成测试一般需要来自不同层的不同对象的交互,如数据库、网络连接、Ioc容器等。其实我们一经常通过运行程序,然后通过自己操作来完成类似于集成测试的流程。集成测试为我们提供了一种无须部署或运行程序来完成验证系统各部分是否能够正常协同工作的能力。
Spring通过Spring TestContext Framework对集成测试提供了顶级支持。它不依赖于特定的测试框架,即可使使用Junit,也可以使用TestNG。
Spring提供了一个SpringJUnit4ClassRuuner类,它提供了Spring TestContext Framework的功能。通过@ContextConfiguration来配置Application Context,通过@ActiveProfile确定活动的Profile。
@RunWith(SpringJunit4ClassRunner.class) // SpringJunit4ClassRunner在Junit环境下提供Spring TestContext Framwork功能
@ContextConfiguration(Class = {TestConfig.class}) // ContextConfiguation用来加载配置ApplicationContext,其中classes属性用来加载配置类
@ActiveProfile("prod") // @ActiveProfile用来声明活动的profile
public class DemoBeanIntegrationTests {
@Autowired
private TestBean testBean;
@Test
public void prodBeanShouldInject() {
String expected = "from production profile";
String actual = testBean.getContent();
Assert.assertEquals(expected, actual);
}
}