首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

利用Spring扩张机制Junit测试Dao和Service的总结

2012-09-21 
利用Spring扩展机制Junit测试Dao和Service的总结在网上看了很多关于Junit测试Dao和Service的文章,然后做出

利用Spring扩展机制Junit测试Dao和Service的总结
   在网上看了很多关于Junit测试Dao和Service的文章,然后做出自己需要的例子,这里源码共享一下,以此回馈一下
   介绍一下Srping的Junit扩展机制相关类:
       下载包:spring-test.jar
   在包org.springframework.test下的Spring测试父类
    1、AbstractSpringContextTests类[1],该类全部方法是protected的,通常不使用这个类,而使用它的子类们。  
   
    2、AbstractDependencyInjectionSpringContextTests类[2]:继承于类[1]:如果仅仅使用Spring依赖注入功能,可以让测试用例继承该类。  
  
    3、AbstractTransactionalSpringContextTests类[3]:继承于类[2], 继承该类的测试用例在spring管理的事务中进行,测试完后对数据库的记录不会造成任何影响。对数据库进行一些操作后,它会自动把数据库回滚,这样就保证了你的测试对于环境没有任何影响。  

    4、AbstractTransactionalDataSourceSpringContextTests:继承于类[3],  功能更强大,用于测试持久层组件,看其源代码,  有一行"protected JdbcTemplate jdbcTemplate;",提供了一个JdbcTemplate的变量, 通过该对象可以直接操作数据库。 
    继承了这四个类的测试类都是属于Test Case性质,可以在Test Suite里跑。
 
    在包org.springframework.test.context.junit4下的Spring测试父类
    AbstractTransactionalJUnit4SpringContextTests同样在spring管理的事务中进行,但是继承该类后无法再在Test Suite里跑。

    以下是测试Service的Abstract方法,写测试类时可以继承该方法,让测试类变得简单。
    AbstractServiceTransactionalTests.Java
   

package com.Bruce.springJunit.service;import java.util.List;import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.annotation.Rollback;import com.Bruce.entity.Sysparamconf;import com.Bruce.service.SysparamconfService;public class TestSysparamconfService extends AbstractServiceTransactionalTests {@Autowiredprivate SysparamconfService sysparamconfService;@OverrideString[] getOtherConfigs() {return new String[] { applicationContextFile };}@Testpublic void testFindAll() {// fail("Not yet implemented");System.out.println("test FindAll()---size "+ sysparamconfService.findAll().size());}@Test@Rollback(true)   //保护数据库现场,让事物不提交,直接rollbackpublic void testWriteSysparameterSysparamconf() {System.out.println("test WriteSysparameter...");Sysparamconf sysparamconf = new Sysparamconf();boolean test;sysparamconf.setPname("testName2");sysparamconf.setPtype(1);sysparamconf.setPvalue("testName2_value2");test = sysparamconfService.writeSysparameter(sysparamconf);assertTrue(test);}}


    至于Dao的测试类写法就大同小异了。
     好了,基于框架的Junit测试用例的砖呀玉呀都抛完咯!
    1 楼 b_l_east 2011-08-23   先留位置!

热点排行