使用junit写单元测试类(带事务回滚说明)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

}
protected ApplicationContext getContext(){
return applicationContext;
}
@Test public void testApplicationContext(){
ApplicationContext ac = getContext(); System.out.println("----------------------->ApplicationContent:"+ac); } } 2、业务测试类 这里写的是dao层的测试类,service层一样,就想平常写dao,service的实现类一样 public class IUserDaoTest extends SpringTest{ @Resource private IUserDao userDao; @Test //所有的单测方法上都要加这个注解,你懂的 @Transactional //如果不加这一行,基类上设置了事务监听类,事务回滚也没有用,因为你没有加事务标志,跟你平常写方法,在 方法上没有加这个标志一样,好理解吧 public void testUserDao(){ User user = userDao.selectByPrimaryKey(1); System.out.println(user.getUserName()+"----------"+user.getPassword());
public <T> T getBean(Class<T> type){
return applicationContext.getBean(type);
}
wenku.baidu.com
public Object getBean(String beanName){
return applicationContext.getBean(beanName);
使用junit写单元测试类(带事务回滚说明)
写单元测试类测试各层的功能是否实现达到预期,我相信很多人呗要求过。
这里是基于spring注解来写的测试类,包括一个基类,其他测试类继承这个基类就ok了。
首先肯定是要引入junit的jar(这里使用maven管理jar)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
<scope>test</scope>
</dependency>
因为要spring支持,所以还需要引入spring的测试类
<dependency>
User u1 = new User(); u1.setId(3); u1.setUserName("zw1"); u1.setAge(22); u1.setPassword("zw1"); userDao.insert(u1); System.out.println("-------------验证插入----------------"); User queryU1 = userDao.selectByPrimaryKey(3);
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
然后是基类,先贴出来在解释
1、基类
@RunWith(SpringJUnit4ClassRunner.class)
//junit测试类标志
@ContextConfiguration(locations={"classpath:spring-mybatis.xml","classpath:spring-mvc.xml"}) //加载配置文件,你的
web.xml里加载了那些配置文件,这里一样要加载那些,多个配置文件以“,”隔开,分别写路径
@TestExecutionListeners(listeners={DependencyInjectionTestExecutionListener.class,TransactionalTestExecutionListener.class})
//事务测试用到,不想破坏数据库数据的增加
@TransactionConfiguration(transactionManager="transactionManager",defaultRollback=true) //这一行与上面一行共存,需
System.out.println(queryU1.getUserName()+"----------"+queryU1.getPassword()); } } 贴下后台打印的效果跟数据库的实际效果吧,主要让大家看事务 后台打印截图
数据库查询截图
结论:结合代码你会发现后台打印是插入了,之后还查询出来了,但是数据库却没有你new的这个zw1用户 另外再多嘴说下单元测试类怎么用,在类上点反键Run as/Debug as,选择JUnit Test,一样可以打断点debug的,一样可以进自己要测试 的方法的,不多说了。 junit单元测试类就这么简单,概念类的大小我就不解释,硬货上了就ok了,说多了糊涂,呵呵
要同时存在才有效,多个事务管理要指明事务管理名(管理名实际与配置文件里的<tx:annotation-driven transaction-
manager="transactionManager" />对应),后面设置为false,将不回滚(也就是你测试插入了,数据库就存在了)
public class SpringTest extends AbstractJUnit4SpringContextTests {
相关文档
最新文档