Spring 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里跑。 

public class ArticleDataDaoTest extends AbstractTransactionalSpringContextTests {
 protected String[] getConfigLocations() {
  return new String[] { "classpath:applicationContext.xml" };
 }
 CfmCatalogArticleDataDAO cfmCatalogArticleDataDAO;
 CfmCatalogMediaDAO media;
 public CfmCatalogMediaDAO getMedia() {
  return media;
 }
 public void setMedia(CfmCatalogMediaDAO media) {
  this.media = media;
 }
 public CfmCatalogArticleDataDAO getCfmCatalogArticleDataDAO() {
  return cfmCatalogArticleDataDAO;
 }
 public void setCfmCatalogArticleDataDAO(
   CfmCatalogArticleDataDAO cfmCatalogArticleDataDAO) {
  this.cfmCatalogArticleDataDAO = cfmCatalogArticleDataDAO;
 }
 public void testTreeView() {
  List list = cfmCatalogArticleDataDAO.getFormalListByCataTypeIdAndName(
    null, "01", -1, -1);
  assertTrue(list.size() != 0);
 }
}

然后直接运行就可以了,在这个过程中涉及到的所有事务都回RollBack.(),我觉得这个功能不错。




你可能感兴趣的:(Spring Junit测试Dao和Service)