綠燈 | 紅燈

妙思資訊

2012年4月3日 星期二

測試 For 迴圈不要忘了測Size 大小

一般測試 Collection 的資料如 List, Set 都會使用迴圈來進行測試。如果你的測試碼如下,可能就會有問題
//測試 getBigHouses()所取出的房子都是>50坪的房子
@Test
public void testHousePing(){
  
 List<House> houses=service.getBigHouses();
  
 for (House house : houses) {
   assertTrue(house.getPing().intValue()>50);
 }  
}

乍看之下好像沒有錯誤,但是如果getBigHouses() 本身就寫錯了,根本就沒有取出任何House,這時跑這支Test 仍舊會過,因為 service.getBigHouses() 取出的 houses 是空的 ,所以根本沒有進入迴圈,因此Test 再沒有任何的assert 下就過了。

所以在進行迴圈測試時,一定要先測Size,確定有資料取出,才不會造成空迴圈測試仍過的誤判。


//測試 getBigHouses()所取出的房子都是>50坪的房子
@Test
public void testHousePing(){
  
 List<House> houses=service.getBigHouses();
 assertTrue(houses.size()>0); //一定要先測size
 for (House house : houses) {
   assertTrue(house.getPing().intValue()>50);
 }  
}

沒有留言: