顯然,I don't understand unit testing。這很好,考慮到我以前從未做過。我正在開始一個新項目,並希望從一開始就將單元測試納入其中,所以我期待學習。單元測試應該涵蓋什麼,不應該包含哪些內容?
我總是把單元測試等同於代碼覆蓋率,認爲你應該有單元測試覆蓋你的應用程序中的每個函數/方法,但顯然情況並非如此,我完全誤解了這個概念。
所以,
- 什麼樣的功能,從單元測試中受益?
- 什麼樣的功能不應該被單元測試?
顯然,I don't understand unit testing。這很好,考慮到我以前從未做過。我正在開始一個新項目,並希望從一開始就將單元測試納入其中,所以我期待學習。單元測試應該涵蓋什麼,不應該包含哪些內容?
我總是把單元測試等同於代碼覆蓋率,認爲你應該有單元測試覆蓋你的應用程序中的每個函數/方法,但顯然情況並非如此,我完全誤解了這個概念。
所以,
根據TDD(測試驅動開發)的方法應該測試每個公共功能,在該功能執行的每一條路徑。
單元測試是一種工具,並且有許多方法可以使用它。這裏是我的做法:
我寫我的單元測試服務和DAO簽名,而不是對DTO和實體類型太多。大部分價值類型都會間接測試。 equals和hashCode方法在DTO和實體類型中應該被測試。
我使用純粹的單元測試和模擬的依賴關係,並使用完整的後端進行集成測試。爲了適當的覆蓋範圍,需要兩者都有
對不起,我有點失落(「DAO簽名」,「DTOs」)。你能澄清一點嗎? – AgentConundrum 2010-08-28 17:46:42
* DAO = http://en.wikipedia.org/wiki/Data_access_object(爲持久化抽象服務) * DTO = http://en.wikipedia.org/wiki/Data_transfer_object(值對象) – 2010-08-28 17:56:45
我沒有一個完整的答案(我很想聽聽別人誰做,說實話),但至少能折騰出幾個點......
@David:你再次!我可以告訴我要從你那裏學到很多東西。兩件事:1)我已經瞭解了#1 /#4,只是通過閱讀大量內容,以及使用類似概念的模糊經歷 - 這與QA的原因相同需要部門 - 開發人員對代碼知之甚多,並會改進測試以通過代碼。 2)回到你爲我也回答的mvc問題,你如何調整「單元測試公共方法」與控制器和路由器/前端控制器之類的東西?這些對象具有公共接口,但我不知道如何將單元測試適用於它們。 – AgentConundrum 2010-08-28 17:54:04
@AgentConundrum:我又來了? :) MVC中的控制器比WebForms中的代碼隱藏最大的好處之一是它們可以很容易地進行單元測試。看看這裏:http://www.lostechies.com/blogs/chrismissal/archive/2010/02/05/unit-testing-simple-asp-net-mvc-controllers.aspx和http://msdn.microsoft .com/en-us/magazine/dd942838.aspx和http://www.asp.net/mvc/tutorials/creating-unit-tests-for-asp-net-mvc-applications-vb「上下文」的應用程序可以被模擬,所以你只需要測試這些操作返回正確的視圖。嘲笑依賴關係驗證它們是否被正確調用。 – David 2010-08-28 18:10:05
(對不起,如果我在這裏假設.NET,這只是我的經驗,無論使用什麼工具,這些概念都可以普遍應用)。 – David 2010-08-28 18:11:16
但是像控制器和路由器(即前端控制器)是公開的,我不知道單元測試如何覆蓋它們。這是我在與我有關的問題中問到的問題,以及這個問題的理由。是否應該修改爲「每個返回值的公共函數」之類的東西,還是有辦法讓單元測試覆蓋這些實例? – AgentConundrum 2010-08-28 17:45:44
控制器和路由器也應該進行測試。這不是理論,而是每天在實踐中完成。一些框架,即Rails,比其他框架更容易。控制器的示例測試:http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers 路由示例測試:http://guides.rubyonrails.org/testing.html#testing-路線 – qertoip 2010-08-28 18:02:07