2013-01-21 49 views
0

我還是會來與單元測試某些事情而言,我有一個關於我的JUnit測試問題的一個相對簡單的類:如何對Java中的集合進行單元測試?

public class Kite { 
    private List<String> strings = new ArrayList<String>(); 

    public void addString(String string) { //... } 
    public void removeString(String string) { //... } 
    public List<String> getStrings() { //... } 
    public int getNumStrings() { //... } 
} 

在這種情況下,我想測試所有四種方法。然而,現在我寫的這些測試都非常相似。它們(不包括刪除)都遵循基本結構,向風箏添加一個字符串,然後檢查風箏對象中的字符串數量。

有沒有更好的方法來測試這些「CRUD」類型的方法?

我需要測試它們嗎?

回答

3

最好是在測試中更具體。對於addString(),您想測試:

  1. 您添加的字符串存在於集合中。

  2. 沒有其他字符串被添加到收藏作爲副作用。

  3. 如果你傳遞null addString(),一個IllegalArgumentException(或任何行爲應該)是,如果你傳遞兩次相同的字符串拋出

  4. ,行爲是你想要的東西(可能是IllegalArgumentException,可能是無操作)

想到了嗎?您想要爲邊緣案例添加測試以及正常行爲(有時稱爲「快樂路徑」)。根據可能的輸入,可能的輸出以及可以採用的代碼路徑考慮您的測試。

+0

你建議的邊緣情況非常有幫助。 – sdasdadas

1

我想如何編寫一個測試模型交易:

  1. 檢查先決條件。
  2. 執行添加操作。
  3. 檢查後置條件。
  4. 回滾添加操作與刪除。
  5. 確保風箏處於原始狀態。

所有這些方法都將以這種方式進行測試。

+0

一個較小的問題,但有人會這樣命名測試呢? (儘管我很欣賞這個答案 - 我沒有考慮到它的前置和後置條件。) – sdasdadas

+0

我不知道。我可能會嘗試「testKiteStrings」或「testStrings_transactional()」或類似的東西。 – duffymo