如果您撰寫了下面這樣一個Servlet程式,並想為它進行測試:
package onlyfun.caterpillar; 為了要能對isValidUser()方法進行測試,需要一個HttpServletRequest物件,而 HttpServletRequest物件是由 Servlet Container 管理的,它有即定的生命週期,有其收集的資訊,您不能單純的創建一個HttpServletRequest就打算交差了事。 有幾個方法可以對isValidUser()方法進行測試,其中之一自然就是直接將LoginServlet置於 Container 之中,如此一來,isValidUser()若能進行測試,您不僅測試了方法本身,也測試了方法與 Container 所管理的資源之交互行為,我們稱這樣的測試為 「In-Container 測試」。 對於In-Container測試,您不僅測試了單元的邏輯行為,也測試了單元能在 Container 中正確的運行,從測試的角度來看,這樣的測試是單元測試的一種,但範圍更廣,我們稱其為集成單元測試(Integration Unit Testing)。 相較於集成單元測試,我們稱之前只使用JUnit進行的測試為「邏輯單元測試」(Logic Unit Test),In-Container測試是集成單元測試的一種,要實際執行In-Container測試,要比單純的邏輯單元測試複雜的多,您要將 Servlet 置於容器之中、編寫 web.xml、啟動容器、運行測試程式對 Servlet 進行測試等等。 Cactus 擴展了 JUnit,被設計來輔助您進行In-Container測試,它在很大部份上隱藏了非測試邏輯的交互細節,只留下與測試相關的部份等您來實現,從使用的角度來說,您使用Cactus進行測試,與您使用JUnit進行測試時沒有太大的不同。 |
|