您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Junit結(jié)合Spring對Dao層進行單元測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/9/4 13:49:26 ] 推薦標簽:

  實際開發(fā)過程中,寫單元測試是非常難的一件事情,其主要原因是代碼結(jié)構(gòu)不夠好,導致單元測試不好寫。特別是Dao層,因為Dao層代碼都是與數(shù)據(jù)庫相關(guān)的,所以我們在對Dao層代碼進行單元測試的時候,不僅僅要考慮我在上篇文章中提到的代碼隔離,還要注意單元測試不能帶來臟數(shù)據(jù)。另外,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對應(yīng)的員工刪除
sysEmployeeDao.deleteEmployee(empId);
//再用該ID去查數(shù)據(jù)庫,如果為空,說明刪除方法邏輯正確
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下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd