2015-02-24 45 views
-3
Class Elem{ 
    private ArrayList<someType> arr = new ArrayList<>(); 

    public void addElement(someType var) { 
     arr.add(var); 
    } 

    public someType bestelement() { 
     someType first= arr.get(0); 
     arr.remove(0); 
     return first; 
    } 
} 

我已經爲此方法編寫了測試用例並且它已成功運行,但我需要知道如何確保remove()方法被調用,並且大小數組列表減少了1?請告訴我如何在測試用例中獲得arr的大小?需要在單元測試中驗證陣列的大小

測試用例這種方法

Class ElemTest{ 
    private Elem obj = new Elem(); 
    private someType var1; 
    private someType var2; 
    private ArrayList<someType> testArr = new ArrayList<>(); 

    @Test 
    public void bestElementTest() { 
     obj.addElement(var1); 
     obj.addElement(var2); 
     testArr.add(var1); 
     testArr.add(var2); 
     someType result = testArr.get(0); 
     assertEquals("test failed", result, obj.bestElem()); 
    } 
} 
+0

我們的信息太少,無法回答。發佈的代碼不會編譯,如果發佈了,它總是會拋出異常。 – 2015-02-24 07:32:05

+0

這段代碼甚至沒有編譯 - 你不能在'return'之後有另一個語句。 – Mureinik 2015-02-24 07:32:07

+1

@Mureinik現在就來看看。 – 2015-02-24 07:42:20

回答

1

鑑於你的榜樣其難度勸你,但總體而言,你的選擇是類集合到一個已知的狀態,叫你方法,chnages類,然後檢查你的狀態是否改變了你的期望。

在這種特定情況下,如果您有權訪問內部列表,那麼您可以檢查列表是否已更改(即元素已被刪除)。如果您沒有訪問到內部列表中,那麼你需要檢查其他的東西,比如:

  • 如果調用bestElement()時再次對象包含超過1元,你得到一個不同的元素
  • 如果您再次調用bestElement()時,對象不應該有任何更多的元素,你會得到一個異常

這些顯然依靠的是能夠給對象設置成以上的國家之一,我們不知道這是否是可能的樣品。

我的最後一條建議是將測試的重點放在行爲上,您希望從您的課堂上看到這一點,而不是實現課程的工作方式。

+0

謝謝..that工作.. – 2015-02-24 09:07:40