使用Spring 2.5 TestContext 测试框架(转载)

上一篇 / 下一篇  2011-04-03 15:41:04 / 个人分类:测试工具学习

http://www.ibm.com/developerworks/cn/java/j-lo-spring25-test/

 

 

要创建一个基于Spring2.5的JUnit4.4测试用例其实相当简单,主要进行以下几步的工作
(1)创建一个扩展自AbstractTransactionalJUnit4SpringContextTests的类,该基类是Spring2.5为方便在JUnit4环境进行事务测试的类,它还提供了一个simpleJdbcTemplate属性让你可以方便地操控数据库表,便于对测试数据进行有效的操作;
(2)用@ContextLocation注解指定你要加载的Spring配置信息所在的位置;(默认的加载文件信息请参阅Spring Documentation);
(3)用@Autowired或@Resource注解注入你的Service接口,@Autowrired是指按类型将Spring Bean注入;而@Resource则按名称将Spring Bean注入。
(4)用@Before准备待测试的数据,如果我们的数据库表结构没有任何数据,则可以在这里预先插入记录,以便进行单元测试,当整个测试完成后,这些数据都不会被保留在数据库中。
(5)在需要进行测试的方法上使用JUnit4.4提供的@Test注解进行标示;

下面我们以一个例子来说明如何编写一个测试用例
<1>示例信息
假设我们有一个名为TrainProjectService的服务类需要进行单元测试,该Service接口的方法如清单1-1所示:

Java代码复制代码 收藏代码
  1. //清单1-1  
  2. public interface TrainProjectService {   
  3.   
  4.     // 根据ID获取培训项目信息  
  5.     public TrainProject getTrainProjectById(Integer trainProjectId);   
  6.     …   
  7. }   
  8.   
  9. //Spring配置信息如清单1-2所示:  
  10. //清单1-2  
  11. /cn/com/suhao/test/train/conf/applicationContext-train-service.xml   
  12. …   
  13. <bean  id="trainProjectService"    
  14. class="cn.com.suhao.test.train.service.impl.TrainProjectServiceImp">   
  15.        <property name="trainProjectDao" ref="trainProjectDao" />   
  16. </bean>   
  17. …   
  18.   
  19. /cn/com/suhao/test/train/conf/applicationContext-train-dao.xml   
  20. …   
  21. <bean  id="trainProjectDao"  
  22. class="cn.com.suhao.test.train.dao.impl.TrainProjectDAOImp" parent="parentDao" />   
  23. …   
  24.   
  25. //<2>测试用例  
  26. @ContextConfiguration(locations={"/cn/com/suhao/test/appconf/applicationContext.xml",    
  27.          "/cn/com/suhao/test/train/conf/applicationContext-*.xml"  
  28.         }   
  29. )   
  30. public class TestTrainProjectService extends AbstractTransactionalJUnit4SpringContextTests {   
  31.   
  32.     @Autowired  
  33.     private TrainProjectService trainProjectService;   
  34.     private Integer projectId;   
  35.        
  36.     @Before  
  37.     public void prepareTestData() {   
  38.         final String  sql = "insert into train_project(project_name, project_attendee) values('English Test', 'Mike')";   
  39.         KeyHolder keyHolder = new GeneratedKeyHolder();   
  40.         simpleJdbcTemplate.getJdbcOperations().update(   
  41.             new PreparedStatementCreator() {   
  42.                 public PreparedStatement createPreparedStatement(Connection conn)   
  43.                     throws SQLException {   
  44.                     PreparedStatement ps = conn.prepareStatement(sql);   
  45.                     return ps;   
  46.                 }   
  47.             }, keyHolder);   
  48.         projectId = keyHolder.getKey().intValue();   
  49.     }   
  50.        
  51.     @Test  
  52.     public void testGetTrainProject() {   
  53.         TrainProject trainProject = trainProjectService.getTrainProjectById(projectId);   
  54.         Assert.notNull(trainProject);   
  55.     }   
  56.        
  57. }  

TAG: Spring spring test Test 单元测试

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar