2010-11-29 96 views
6

我仍然理解測試驅動開發。我對應用程序的用戶註冊模塊有以下要求。確定什麼是單元測試,什麼不是

  1. 系統必須捕獲用戶的名字,姓氏,電子郵件地址和可選,郵政地址
  2. 名字和姓氏必須是字母
  3. 名字和姓氏不能爲空
  4. 的電子郵件地址必須是有效地址並且是必填項
  5. 郵政地址是可選的。

在java中實現上述。我已經寫以下代碼:

  1. 包含上述字段以及具有相應的getter和setter這個Java bean
  2. 驗證註解用於上述領域
  3. 一種用於保存用戶
  4. 用戶接口道用於輸入用戶詳細信息。

問題:上面哪段代碼應該用單元測試覆蓋?即Bean的getter和setter,驗證註釋的存在,dao保存用戶的能力,UI中相關表單元素的存在。

+0

請使用適當的技術(例如Java)對此進行標記。 – RPM1984 2010-11-29 05:45:05

+4

@ RPM1984:爲什麼?這個問題顯然是關於單元測試和TDD的,答案同樣適用於任何其他語言。 – 2010-11-29 05:47:00

回答

4

我寫的,我講道理測試「可我這樣做不對嗎?」。這意味着我不費心去測試其他庫提供的 - 只有我的配置。

吸氣劑和制定者 - 絕對不是。我使用Eclipse來生成它們,這不值得測試。

驗證註解 - 我不會測試他們,例如,正確實施一個空檢查,我依靠他們做它在罐子上說什麼,但我會測試他們的存在。做正確的領域有他們嗎?如果我使用正則表達式配置它們,我會測試正確的正則表達式。

另一個例子,如果我用Hibernate存儲我的POJO。我不檢查Session.save(myObj)是否正常工作,但我可以做的錯誤,如交易邊界和映射配置(都保存了所有字段)等。

我發現用戶界面測試確實很難。我曾多次想過「這次我會」 - 但比形式更復雜,我放棄了。使用像MVP這樣的模式意味着我可以注入事件來測試大部分計算內容 - 但仍然存在與未經測試的UI的連接。我通常最終會對它進行測試,複雜的數據處理以及容易出錯的事情。

2

有一件事我知道TDD,你永遠不會寫代碼。

您首先編寫一個測試,當您的測試失敗時,您會編寫/生成代碼來修復它,然後編寫更多測試來打破您打算實現的功能併爲其編寫/修復原始代碼。

它是最好的,如果你有100%的代碼覆蓋率。

參考維基百科,你需要如何開始您的項目與TDD - http://en.wikipedia.org/wiki/Test-driven_development