• 使用 Spring 进行单元测试


    一、使用spring中对Junit框架的整合功能

        除了junit4和spring的jar包,还需要spring-test.jar。引入如下依赖:

    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-test</artifactId>  
        <version>3.1.1.RELEASE</version>  
    </dependency>
    package service; 
     import static org.Junit.Assert.assertEquals; 
    
     import org.Junit.Test; 
     import org.Junit.runner.RunWith; 
     import org.Springframework.beans.factory.annotation.Autowired; 
     import org.Springframework.test.context.ContextConfiguration; 
     import org.Springframework.test.context.Junit4.SpringJUnit4ClassRunner; 
     import org.Springframework.transaction.annotation.Transactional; 
    
     import domain.Account; 
    
     @RunWith(SpringJUnit4ClassRunner.class) 
     @ContextConfiguration("/config/Spring-db1.xml") 
     @Transactional 
     public class AccountServiceTest1 { 
         @Autowired 
         private AccountService service; 
        
         @Test 
         public void testGetAcccountById() { 
     Account acct = Account.getAccount(1, "user01", 18, "M"); 
             service.insertIfNotExist(acct); 
             Account acct2 = service.getAccountById(1); 
             assertEquals(acct,acct2); 
         } 
     }

    对这个类解释一下:

    • @RunWith 注释标签是 Junit 提供的,用来说明此测试类的运行者,这里用了 SpringJUnit4ClassRunner,这个类是一个针对 Junit 运行环境的自定义扩展,用来标准化在 Spring 环境中 Junit4.5 的测试用例,例如支持的注释标签的标准化
    • @ContextConfiguration 注释标签是 Spring test context 提供的,用来指定 Spring 配置信息的来源,支持指定 XML 文件位置或者 Spring 配置类名,这里我们指定 classpath 下的 /config/Spring-db1.xml 为配置文件的位置
    • @Transactional 注释标签是表明此测试类的事务启用,这样所有的测试方案都会自动的 rollback,即您不用自己清除自己所做的任何对数据库的变更了
    • @Autowired 体现了我们的测试类也是在 Spring 的容器中管理的,他可以获取容器的 bean 的注入,您不用自己手工获取要测试的 bean 实例了
    • testGetAccountById 是我们的测试用例:注意和上面的 AccountServiceOldTest 中相同的测试方法的对比,这里我们不用再 try-catch-finally 了,事务管理自动运行,当我们执行完成后,所有相关变更会被自动清除

    参考:http://www.ibm.com/developerworks/cn/java/j-lo-springunitest/index.html

  • 相关阅读:
    使用迭代器模式批量获得数据(C#实现)
    如何从技术上预防抢票软件刷屏
    如何用Tesseract做日文OCR(c#实现)
    我的.net开发百宝箱
    程序员必备基础:Git 命令全方位学习
    Java 异常处理的十个建议
    50道Java集合经典面试题(收藏版)
    记一次接口性能优化实践总结:优化接口性能的八个建议
    100道MySQL数据库经典面试题解析(收藏版)
    800+Java后端经典面试题,希望你找到自己理想的Offer呀~
  • 原文地址:https://www.cnblogs.com/liaojie970/p/6222247.html
Copyright © 2020-2023  润新知