基于 JUnit单元测试---Spring与Hibernate整合测试
1.添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
2.编写测试用例
package com.fxw.util;
import org.hibernate.internal.SessionFactoryImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class SpringIntegrationTest {
@Autowired
private ApplicationContext context;
@Test
public void test() {
SessionFactoryImpl sessionFactory = (SessionFactoryImpl) context.getBean("sessionFactory");
System.out.println(sessionFactory);
}
}
注意:在使用 spring-test 的过程中,有两个 runner 可以选择,分别是 SpringRunner 和 SpringJUnit4ClassRunner。
如果是在 4.3 之前,只能选择 SpringJUnit4ClassRunner,如果是 4.3 之后,建议选择 SpringRunner。
SpringRunner 对 junit 的版本有要求,需要 4.12 及以上。
那么@RunWith(SpringRunner.class)与@RunWith(SpringJUnit4ClassRunner.class)有什么区别呢?
SpringRunner继承了SpringJUnit4ClassRunner,没有扩张任何功能,只是缩短了名字而已。
除此以外,我们还可以专门写一个Base类,用来加载spring环境,配置事务,接下来的测试类只要继承它就好了。
package com.fxw.util;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@Transactional(transactionManager = "transactionManager")
@Rollback(value = false)
public class BaseTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("============单元测试start==========");
System.out.println("============ 初始化数据 ==========");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("============单元测试end==========");
System.out.println("============ 清理数据 ==========");
}
}
最后修改于 2020-10-20 19:58:06
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

