剛接觸單元測試時,就是使用的Junit,說實話,對于新手來說,這個東西還是很直觀的,成功了就是一條非常好看的綠條,失敗了就是一條讓心滴血的紅條(有點夸張),但正是由于它的直觀,也會很容易迷惑人。一開始,在我心里就留有這樣一個印象,紅條出現,那肯定是有不對的地方(這無可厚非),綠條出現就一定成功了,那我就不去再管了,這就有問題了,為什么呢?請看看下面的測試腳本:
@Test
public void testSomething(){
try{
//調用被測試接口
……
//驗證調用結果
AssertEquals(expect, actual)
}catch(SomeException e){
……
}
}
這段代碼如果運行之后是綠條,是否表明該用例成功了呢?答案顯然不是,為什么呢?因為在調用被測接口的時候我們會捕獲異常,如果在調用被測接口時拋出了異常,而這個異常恰好是我們要捕獲的異常,那么后面的AssertEquals(expect, actual)語句根本就不會運行到,而是直接跳轉到catch塊中去了,這樣就不會做任何的驗證了,也就不會有驗證失敗,當然Junit會認為這次測試是成功的,但實際上卻不是這樣的。要避免這樣的錯誤也比較容易,只需要把驗證的語句從try塊中拿出來,放在try的后面就可以了,這樣不管try塊里面的運行情況是怎么樣的,驗證語句總能夠運行到。
文章來源于領測軟件測試網 http://www.kjueaiud.com/