2010-06-12 48 views
3

不僅僅是一個問題,本身,這是一個嘗試與其他人比較筆記 。我寫了一個通用的History類,它模擬瀏覽器歷史記錄的功能 。我正在試圖將我的 頭圍繞在編寫單元測試的時候有多遠。我是 使用NUnit。請在下面分享您的測試方法。測試通用類

History類的完整代碼是herehttp://pastebin.com/ZGKK2V84)。

回答

8

雖然這個問題有點模糊,在一般情況下,像這樣一類的,我建議測試以下,至少包括:

  • 測試每個方法和屬性的公共API中,驗證每個加入「真實」的數據時,適當地改變了內部的集合
  • 測試增加無效數據給每個方法(應此接受空引用,例如?),確保你要麼適當的例外或者你的願望
  • 行爲考慮它是一個泛型類,我會用值類型和引用類型來測試它(除非你決定在其中添加一個約束)
3

與你眼中的非泛型類相比,它作爲一個泛型類的具體內容與測試有什麼不同?我看不出這個問題:)

只需填寫T在單元測試某種類型,比如int讓你擁有History<int>一個實例,然後測試所有的類有趣的邏輯是正常的。例如。不存在歷史時不能倒退,前進意味着可以向後移動等等。通常的東西:)如果你不知道該怎麼做,可以獲得一本書或閱讀一些單元測試教程。

+2

我並不打算表達出現問題。至於你的問題:「與你眼中的一個非泛型類相比,它是一個通用類的特別之處,與測試有什麼不同?」這就是我想要弄清楚的......我懷疑沒有什麼區別,但是想與人們比較一下筆記,看看我是否在朝着正確的方向前進。 – 2010-06-13 00:06:26

+3

我認爲裏德是對的。測試中泛型類和非泛型類之間的唯一區別就是您將其封裝到它中。他建議引用類型和值類型。我同意。 – dviljoen 2010-06-13 02:07:42

+0

是的,這是一個公正的評論:) – 2010-06-13 02:11:05

1

編寫一個鏡像泛型類的泛型測試類。然後創建另一個測試類,用兩個不同類型的參數實例化該測試類(值類型和某種類型的引用類型是一個好的開始)。