用Spring2.5进行单元测试

要创建一个基于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);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值