您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
Junit结合Spring对Dao层进行单元测试
作者:网络转载 发布时间:[ 2013/9/4 13:49:26 ] 推荐标签:

  实际开发过程中,写单元测试是非常难的一件事情,其主要原因是代码结构不够好,导致单元测试不好写。特别是Dao层,因为Dao层代码都是与数据库相关的,所以我们在对Dao层代码进行单元测试的时候,不仅仅要考虑我在上篇文章中提到的代码隔离,还要注意单元测试不能带来脏数据。另外,dao层实例依赖spring上下文,我们怎么样来解决这个问题?

  看看下面的一个的测试实例:

/**
* @author lisanlai <br />
* Mail: sanlai_lee@qq.com<br />
* Blog:http://blog.lisanlai.cn <br />
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "/META-INF/spring/sellmanager-context.xml",
"/META-INF/spring/dao-context.xml",
"/META-INF/spring/mvc-context.xml" })
//@Transactional
public class SysEmployeeDaoTest {
/**
* 测试deleteEmployee方法 .
* Method Name:deleteEmployee .
* the return type:void
*/
@Test
public void deleteEmployee() {
Employee employee = new Employee();
employee.setEmployeeCode(""+new Date().getTime());
employee.setEmployeeName("lisanlai");
employee.setDelFlag("0");
String empId = sysEmployeeDao.save(employee);
Assert.assertNotNull("新增的员工ID为null",empId);
//把该id对应的员工删除
sysEmployeeDao.deleteEmployee(empId);
//再用该ID去查数据库,如果为空,说明删除方法逻辑正确
Employee emp = sysEmployeeDao.get(empId);
Assert.assertNotNull(emp);
Assert.assertArrayEquals("deleteEmployee方法逻辑不正确,员工没有被删除",
new String[]{"1"}, new String[]{emp.getDelFlag()});
//删除员工对象
sysEmployeeDao.delete(emp);
}
/**
* 测试saveEmployee方法 .
* Method Name:saveEmployee .
* the return type:void
*/
@Test
@Transactional
@Rollback(true)
public void saveEmployee() {
Employee employee = new Employee();
employee.setEmployeeName("lisanlai");
String empCode = ""+new Date().getTime();
employee.setEmployeeCode(empCode);
sysEmployeeDao.saveEmployee(employee);
//通过code查找员工
List<Employee> emps = sysEmployeeDao.findByNamedParam(
new String[]{"employeeCode"},
new String[]{empCode});
Assert.assertTrue("saveEmployee方法逻辑错误,员工保存失败!", !emps.isEmpty());
}
}

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd