1.關于單元測試:
單元測試中的Test Case在設計時,有兩點要注意的:
a. 測試的方法最好短小精悍,每個test case只測試一個關注的功能,假如一個方法的處理邏輯里面包含了對幾種可能情況的處理,那么測試案例最好分成幾個來測試,舉例如下
方法: public void convertStringToDate(String string)
在實際應用過程中,傳入參數string的值可能有下面幾種情況:
1). Null
2). 空格
3). 非空但格式錯誤
4). 非空且格式正確,但值錯誤(如:2008-02-31 23:59:59)
5). 非空且格式、值均正確
那么如果我們在同一個測試方法中: public void testConvertStringToDate()測試所有的可能情況,會有下面兩個問題:
1). 代碼量增多
2). 不利于修改,假如由于業務方法中某個處理邏輯改變了,此時重新測試時必須測試所有其它的方法
3). 可能造成測試案例的順序依賴,比如其中某個方法會拋出異常,之后的測試案例可能不會被執行到
如果我們按照上面可能出現的情況來分的話,那么就有五個測試案例,從數量上看是多了,但是后果就是每個方法都非常短小(不超過6行),簡單明了,一目了然,即便測試案 例錯了,我也能馬上看出來。其次一個測試案例的修改不會影響到其它的測試案例。
b.測試方法是否拋出異常,可以參考下面的代碼結構:
try{
調用被測試代碼 // 此處的代碼必須是明確會拋出異常的,因為這是我們要測試的目的
fail("Error: Must throw an exception here.");
} catch(Exception e){
assertTrue(true);
}
2.關于使用DateFormat及其子類進行字符串和日期轉換的注意點:
使用DateFormat將字符串轉換成Date對象時,必須注意在轉換前,先調用:setLinient(false);否則的話即使實際的日期數值有問題,例如2008-04-32 23:59:59,只要格式正確,也能夠被轉換成功,但這在實際的應用中是沒有意義的。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2008-04-28 00:37
Paul Lin 閱讀(213)
評論(0) 編輯 收藏