浏览 5113 次
锁定老帖子 主题:用Spring2.5进行单元测试
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-28
关键字:Spring2.5,Unit Test,JUnit4.4; 内容: 要创建一个基于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所示: 清单1-1 public interface TrainProjectService { //根据ID获取培训项目信息 public TrainProject getTrainProjectById(Integer trainProjectId); … } Spring配置信息如清单1-2所示: 清单1-2 /cn/com/suhao/test/train/conf/applicationContext-train-service.xml … <bean id="trainProjectService" class="cn.com.suhao.test.train.service.impl.TrainProjectServiceImp"> <property name="trainProjectDao" ref="trainProjectDao" /> </bean> … /cn/com/suhao/test/train/conf/applicationContext-train-dao.xml … <bean id="trainProjectDao" class="cn.com.suhao.test.train.dao.impl.TrainProjectDAOImp" parent="parentDao" /> … <2>测试用例 @ContextConfiguration(locations={"/cn/com/suhao/test/appconf/applicationContext.xml", "/cn/com/suhao/test/train/conf/applicationContext-*.xml" } ) public class TestTrainProjectService extends AbstractTransactionalJUnit4SpringContextTests { @Autowired private TrainProjectService trainProjectService; private Integer projectId; @Before public void prepareTestData() { final String sql = "insert into train_project(project_name, project_attendee) values('English Test', 'Mike')"; KeyHolder keyHolder = new GeneratedKeyHolder(); simpleJdbcTemplate.getJdbcOperations().update( new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection conn) throws SQLException { PreparedStatement ps = conn.prepareStatement(sql); return ps; } }, keyHolder); projectId = keyHolder.getKey().intValue(); } @Test public void testGetTrainProject() { TrainProject trainProject = trainProjectService.getTrainProjectById(projectId); Assert.notNull(trainProject); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-16
最后修改:2009-04-16
如果能提供完整工程(可由eclipse直接导入),哪怕功能再简单(只是简单的增删改查),那样也对初学者更有帮助!
|
|
返回顶楼 | |
发表时间:2009-04-17
单元测试最近都用groovy gmock了
|
|
返回顶楼 | |
发表时间:2009-05-05
请问,如果我将struts2的action交给spring管理,那么能够使用类似的方式来测试action吗?也就是我能够从spring中直接获取到一个可用的action吗?望赐教。
|
|
返回顶楼 | |
发表时间:2009-05-12
貌似不用这么复杂的写法
|
|
返回顶楼 | |
发表时间:2009-05-12
<script>alert('If you see this you have a potential vulnerability');</script>
|
|
返回顶楼 | |