我有一大堆的Tomcat servlet容器下運行的servlet。我想將測試代碼與生產代碼分開,所以我考慮使用測試框架。 JUnit很好地集成到Eclipse中,但是我沒能使它運行使用運行的Tomcat服務器的servlet。您能否推薦一個支持測試Tomcat servlet的單元測試框架? Eclipse集成很好,但不是必需的。單元測試的servlet
回答
退房ServletUnit,這是HttpUnit的一部分。簡而言之,ServletUnit提供了一個模擬庫和實用程序庫,您可以在普通的JUnit測試中使用它們來模擬一個servlet容器和其他與servlet相關的對象,如請求和響應對象。上面的鏈接包含示例。
自2008-05以來,HttpUnit項目似乎沒有任何活動。也許它已經死了? – Raedwald 2013-06-10 12:12:04
好。忽略'tomcat'位並編碼到servlet,最好的辦法是爲響應和請求對象創建模擬,然後告訴它你期望的結果。
因此,對於一個標準的空doPost方法,以及使用EasyMock,你必須
public void testPost() {
mockRequest = createMock(HttpServletRequest.class);
mockResponse = createMock(HttpServletResponse.class);
replay(mockRequest, mockResponse);
myServlet.doPost(mockRequest, mockResponse);
verify(mockRequest, mockResponse);
}
然後開始添加代碼到doPost方法。嘲笑會失敗,因爲他們沒有期望,然後你可以從那裏設定預期。
注意,如果你想與類使用EasyMock的,你將不得不使用EasyMock的類擴展庫。但從那時起它將以同樣的方式工作。
對於「容器內」測試,看看Cactus
如果你想能夠測試不運行的容器,你可以模擬它的組件用自己的mockobjects(與EasyMock如),或者你可以嘗試MockRunner已經「預先定義的」存根測試的Servlet,JDBC的連接等
「2011/08/05 - 雅加達仙人掌已經退役。」 – Raedwald 2013-06-10 12:12:54
Spring框架有幾類不錯的現成的模仿對象進行的Servlet API:使得與從該業務部分的HTTP請求和響應處理
獨立的那部分代碼邏輯或數據庫操作。在大多數情況下這將產生一個三層結構,具有一個數據層(用於數據基/持久性),服務層(業務邏輯)和表示層(對於HTTP請求和響應)。
- 你可以在沒有任何servlet的情況下對前兩層進行單元測試;這樣測試會更容易。
- 可以測試表現層,as others suggest,使用模擬HTTP請求和響應的對象。
- 最後,如果你覺得它確實是必要的,你可以使用過諸如HtmlUnit或JWebUnit集成測試。
更新於2018年2月:OpenBrace Limited has closed down,其ObMimic產品不再受支持。
如果您希望ServletUnit的更新替代方案用於Servlet的JUnit測試,您可能會發現我公司的ObMimic庫有用。它可從網站的downloads頁面免費獲得。
與ServletUnit一樣,它提供了一個類庫,您可以在任何Servlet容器之外的常規JUnit或TestNG測試中使用這些類來模擬Servlet API。
它的Servlet API對象具有無參數構造函數,對於所有相關的Servlet API數據和設置都是完全可配置和可檢查的,並且提供了由Servlet API的javadoc指定的所有行爲的完整模擬。爲了幫助測試,支持Servlet API調用的選擇性記錄,控制任何與容器相關的行爲,檢查任何模糊的調用(即Servlet API行爲未完全定義的情況)以及針對任何容器的任何內存JNDI模擬依賴於JNDI查找的servlet代碼。
有關詳細信息,示例代碼,「如何」指南,Javadoc等,請參閱網站。
- 1. 單元測試Java Servlet
- 2. 單元測試使URL調用的servlet
- 3. 單元測試測試
- 4. CakePHP測試 - 單元測試
- 5. 單元測試
- 6. 單元測試
- 7. 單元測試
- 8. 單元測試
- 9. 單元測試
- 10. 單元測試
- 11. 單元測試
- 12. 單元測試
- 13. 單元測試
- 14. 單元測試
- 15. 單元測試
- 16. 單元測試
- 17. 單元測試
- 18. 單元測試()
- 19. 單元測試
- 20. 單元測試
- 21. 單元測試
- 22. 單元測試帶嵌入式Jetty的servlet
- 23. 通過單元測試和單元的Mockito和測試的Mockito
- 24. 單元測試中的性能測試
- 25. iOS的單元測試與UI測試
- 26. Ruby測試::的單元測試零SimpleDelegator
- 27. 單元測試建議 - 如何單元測試您的.asmx
- 28. 單元測試,犀牛,單元測試的藝術
- 29. Simple單元測試簡單單元測試
- 30. 單元測試:在一般的單元測試和測試控制
我使用jUnit啓動一個Jetty servlet容器之前,如果關閉之後關閉。 – LeeGee 2014-01-21 16:45:48