Spring Boot单元测试
概要说明
Spring Boot应用只是一个Spring ApplicationContext
,所以在测试时对它只需要像处理普通Spring context那样即可。唯一需要注意的是,如果你使用SpringApplication
创建上下文,外部配置,日志和Spring Boot的其他特性只会在默认的上下文中起作用。
Spring Boot提供一个@SpringApplicationConfiguration
注解用于替换标准的spring-test
@ContextConfiguration
注解,该组件工作方式是通过SpringApplication
创建用于测试的ApplicationContext
。
注 不要忘记在测试用例上添加@RunWith(SpringRunner.class)
,否则该注解将被忽略。
示例
@RunWith(SpringJUnit4ClassRunner.class)
// 填写激活的配置类
@SpringBootTest(classes = {SpringConfiguration.class,
Application.class})
public class PersistenceEntitiesTest {
@Autowired
private DataSource dataSource;
@Autowired
private SessionFactory sessionFactory;
private Session session;
private Transaction tx;
/**
* 测试 C3P0 数据源是否成功连接数据库
* @throws SQLException
*/
@Test
public void dataSourceTest() throws SQLException {
System.out.println(dataSource.getConnection());
}
@Before
public void beforeTest() {
this.session = sessionFactory.openSession();
this.tx = session.beginTransaction();
}
@After
public void afterTest() {
this.tx.commit();
this.session.close();
}
/**
* 测试 Hibernate 关系映射是否正常, 操作
* 1. 修改 application.prperties hibernate.hbm2ddl.auto=create
* 2. 运行 hibernateSaveTest 单元测试
* 3. 修改 application.prperties hibernate.hbm2ddl.auto=update
* 4. 运行 hibernateMappingRelationTest 单元测试
*/
@Test
public void hibernateMappingRelationTest() {
Movie caribbean = session.get(Movie.class, 3);
System.out.print(caribbean);
}
...
}