2014年3月7日 星期五

cactus - 基本安裝與使用(Servlet測試)

參考:Junit In Action 2rd  Tomcat Quickstart forewords

這篇主要使用Tomcat + eclipse做使用環境,因此當然得先確認eclipse有妥善安裝,以及妥善設定好對應的Tomcat,這邊就不多作說明了.


  1. 首先至官網下載欲使用的cactus版本,並且解壓縮
  2. 在Eclipse中建立好Dynamic Web Project
  3. 將步驟1中的 \lib\下的 這幾個檔案找出來:
    >>cactus.jar
    >>commons-httpclient.jar
    >>commons-logging.jar
    >>junit.jar
    >>aspectjrt.jar
    請注意以上都忽略版本號的名稱
  4. 將上述檔案置放於步驟2建立好的專案下的WebContent\WEB-INF\lib下
  5. 建立欲測試的Servlet,如下:
  6.  
    public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      try{
       String reqBillDate = request.getParameter("reqBillDate");
       process(reqBillDate);
       //...
      }catch(...){
      }
    }
    }
    

  7. 新增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中的輸出結果.
  8. 準備好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..
  9. 執行Tomcat(在這裡我是使用Eclipse執行)
  10. 輸入網址如下:
    http://localhost:8080/WebProject/ServletTestRunner?suite=ut.cactus. CactusTestServlet&xsl=cactus-report.xsl
    suite參數帶入的就是欲執行的TestCase全名(包含package)
  11. 觀看測試報表囉~~大致如下畫面:

沒有留言:

張貼留言