我的JUnit測試應該檢查返回的數量是一樣的列表大小的JUnit返回int值
如果我的測試結果如下請問這是正確編碼,我覺得它不是因爲我最後兩行總會是真的嗎?
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = list.size();
assert size == list.size();
}
我的JUnit測試應該檢查返回的數量是一樣的列表大小的JUnit返回int值
如果我的測試結果如下請問這是正確編碼,我覺得它不是因爲我最後兩行總會是真的嗎?
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = list.size();
assert size == list.size();
}
我不會說你的測試是正確的。
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = 0;
assert size == list.size();
}
上面的變化將確保您的測試總是會爲零,因爲看起來像預期的結果。如果它不是零,那麼測試將失敗。
你可以測試,例如,列表是否爲空(大小== 0)時,該列表的創建:
ArrayList<Pilot> list = new ArrayList<Pilot>();
assertEquals(0, list.size());
// or: assertTrue(list.isEmpty());
和/或你可能有些條目添加到列表中,檢查是否列表的大小相應地設置:
list.add(pilot1);
list.add(pilot2);
assertEquals(2, list.size());
編輯:
當單元測試列表(ArrayList
),你應該想想該列表可以如何使用(測試場景)。例如,
當然你的測試首先需要做的事情,即觸發您正在測試填充試點對象的ArrayList中的代碼?所以,你會按如下方式編碼你的測試:
public void testGetTotalPilots()
{
ArrayList<Pilot> list = new ArrayList<Pilot>();
// Invoke the code that populates the Pilot list
int size = 3; // Set this to the expected number
assertEquals(size, list.size());
}
......否則你只是沒有測試任何東西。
是的,原始問題只是測試Java ArrayList API是否工作正常 - 假設它可能是安全的。 – cyborg 2009-12-21 09:38:00
你在這裏測試的是ArrayList。爲什麼?我認爲花時間測試Java附帶的類的基本功能並且它們被廣泛使用並不是特別有用。
看着測試的名字,這個測試應該從其他地方得到列表,然後測試關於飛行員列表的假設。或者,正如我在你的其他文章中所說的那樣, List pilots = pilotDao.getAll(); pilots.add(新Pilot) 然後檢查是否對此發生了正確的反應,例如,如果不希望人們修改列表或隨後調用pilotDao.getAll();
返回大小爲1的列表,則會引發異常。
assert
是不能在測試中使用的Java語言功能。它僅通過運行時選項-ea
進行評估!沒有這個選項,你的代碼不會測試請使用junit.framework.Assert
的方法,如assertEquals()
。
另一方面,我不確定,你的測試應該測試什麼。 list.size()總是list.size()。你應該斷言一個數字。你也不需要測試ArrayList - 它可以工作。你的代碼在哪裏測試?
這可能適用於JUnit,但還有其他測試框架。例如,在TestNG中,斷言是聲明斷言的首選方式,請參閱http://testng.org/doc/documentation-main.html#success-failure – 2009-12-21 09:48:35
問題始於「我的Junit測試」。另外TestNG還有一個自己的斷言類(org.testng.Assert),文檔中還提供了斷言來使測試工作。 – 2009-12-21 10:49:55
您正在使用錯誤的斷言 - 這是內置的Java關鍵字,而不是Junit Assert類。應該是Assert.Equals(size,list.size()); – Paolo 2009-12-21 09:40:42
或者使用TestNG代替JUnit,其中使用'assert'有效 – 2009-12-21 09:53:26