2009-12-21 234 views
0

如果我有一個基本的訪問器方法返回一個ArrayListJUnit測試 - 我測試了什麼?

我究竟會測試它呢? 我對測試非常缺乏經驗。你

+0

然後看了一些文章和觀看一些介紹;) – Bozho 2009-12-21 08:57:39

+1

只是一個相關的評論,這是更好地返回一個迭代基礎集合,而不是提供存取方法來回報您的集合實例。返回迭代器限制了包含集合實例的類的可變性。 – sateesh 2009-12-21 09:34:57

+0

@sateesh - 甚至更好:'返回Collections.unmodifiableList(MYLIST);'。一些迭代器實現了一個'delete()'方法...... – 2009-12-21 10:17:00

回答

2

這取決於你期望該方法的行爲。例如:如果某人調用了該方法並更改了檢索到的列表,那麼是否希望在下次調用getter時顯示這些更改?無論哪種方式,測試行爲。當列表爲空時,getter返回什麼?是空還是空列表?這也應該被測試。

1

Interessting問題:

How much should a unit test "test"

How to use Junit and Hibernate usefully

What should not be unit tested

編輯:

加入了一些我不喜歡的問題在這裏關於#1 JUnit和單元測試。

+0

什麼是Hibernate在這裏? – Bozho 2009-12-21 08:58:36

+0

我加入吧...引起一些人往往忘記了Junit的可以有很多不同的組件協同工作。這對於初學者來說是一個很好的起點......但那只是我的2美分。 – bastianneu 2009-12-21 09:03:19

1

通常爲訪問者編寫明確的Junit測試通常有點矯枉過正(你在測試什麼?return foo;)。使用code coverage工具(如clover)可幫助您首先針對最複雜的代碼進行測試工作。

0

請務必記住,測試代碼也是代碼,對於每1,000行代碼,您至少會產生4個錯誤。因此,測試什麼不起作用,不要爲不可能破壞的東西編寫測試(如IDE生成的代碼)。如果它確實中斷了,寫一個測試:)

0

在一般的單元測試中應該測試你的方法是否做了它應該做的事情。

如果你的方法返回一個數組列表,你的基本測試就是聲明一個數組列表在被調用時確實返回。

測試中的下一級細節是檢查arraylist構造是否正確?你期望它的值是否被正確填充?如果它應該是一個空的列表,是這樣嗎?

現在你有了你的「陽光燦爛的日子」的情況下(即該方法在正常情況下工作),如果合適的話,你應該添加一些負面(或「下雨天」)條件。如果該方法接受陣列的長度,如果你傳遞一個負數或int.Max等數據。

正如另一個答案中所述,這對於一個簡單的訪問器來說可能是過分的,但這些原則適用於任何你需要編寫單元測試。

0

取決於您的要求。您可能測試:

  1. 如果返回值不爲空
  2. 如果如果返回的集合是可以修改返回的集合不爲空
  3. /不可修改
  4. 如果返回的集合進行排序
  5. 如果返回的集合包含所有期望值
  6. 如果訪問器方法不會拋出運行時異常

但是,正如我所說的,這取決於不同的要求,這取決於「之類的」,當你調用存取收集你的期望。也許你允許將列表設置爲null,但創建一個空列表。測試可以確保當您將列表設置爲空時,您確實會獲得空列表。

希望它可以幫助給你的想法!