這篇主要使用Tomcat + eclipse做使用環境,因此當然得先確認eclipse有妥善安裝,以及妥善設定好對應的Tomcat,這邊就不多作說明了.
- 首先至官網下載欲使用的cactus版本,並且解壓縮
- 在Eclipse中建立好Dynamic Web Project
- 將步驟1中的 \lib\下的 這幾個檔案找出來:
>>cactus.jar
>>commons-httpclient.jar
>>commons-logging.jar
>>junit.jar
>>aspectjrt.jar
請注意以上都忽略版本號的名稱 - 將上述檔案置放於步驟2建立好的專案下的WebContent\WEB-INF\lib下
- 建立欲測試的Servlet,如下:
- 新增cactus test(這裡新增一個package專門置放cactus TestCas)
package ut.cactus; public class CactusTestServlet extends ServletTestCase{ TestServlet _sv = new TestServlet(); public void setUp(){ // do something.. } public void beginDoGet(WebRequest request){ request.addParameter("reqBillDate", "20131212"); } public void testDoGet() throws Exception{ _sv.doGet(request, response); } public void endDoGet(WebResponse response) throws Exception { String result = response.getText(); assertEquals("expectedResult",result); } }
關於上述簡單說明如下:
>>setUp()與tearDown()為Junit標準使用不另外敘述
>>beginXXX()與testXXX(),endXXX()為一對的,例如上例中的:beginDoGet(),testDoGet(),endDoGet().beginXXX()代表為做測試之前(執行testXXX()之前)欲做的準備,例如我們會在這邊塞入request的測試參數;而endXXX是做測試之後會被執行的,在這裡我們可以用來檢查servlet Response中的輸出結果. - 準備好web.xml,除了原先就必須建立的TestServlet宣告之外,還必須加入下列:
ServletRedirector org.apache.cactus.server.ServletTestRedirector param1 value1 used for testing ServletTestRunner org.apache.cactus.server.runner.ServletTestRunner ServletRedirector /ServletRedirector ServletTestRunner /ServletTestRunner
p.s:其實我很不希望Test與正是專案綁在一起,而且像上面還一併要得修改web.xml,但目前剛接觸cactus還不知道如何把它區別出來到另一個Test專案執行...
也許得搭配使用Ant.. - 執行Tomcat(在這裡我是使用Eclipse執行)
- 輸入網址如下:
http://localhost:8080/WebProject/ServletTestRunner?suite=ut.cactus. CactusTestServlet&xsl=cactus-report.xsl
suite參數帶入的就是欲執行的TestCase全名(包含package) - 觀看測試報表囉~~大致如下畫面:
public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ String reqBillDate = request.getParameter("reqBillDate"); process(reqBillDate); //... }catch(...){ } } }
沒有留言:
張貼留言