<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0
     

    使用cactus實現對servlet進行單元測試

    步驟如下:

    [1]       創建Web工程ServletTestDemo

    myeclipse中創建Web project,命名為ServletTestDemo

    [2]       下載cactus-bin-1.8

    apache官方網站下載

    [3]        導入cactus的相關包到項目的lib目錄

             導入后,/WebRoot/WEB-INF/lib目錄結構如下所示:

            |-- lib

            |   |-- cactus.core.framework.uberjar.javaEE.14-1.8.1.jar

            |   |-- cactus.integration.ant-1.8.1.jar

            |   |-- cactus.integration.shared.api-1.8.1.jar

            |   |-- commons-codec-1.4.jar

            |   |-- commons-httpclient-3.1.jar

            |   |-- commons-logging-1.1.jar

            |   |-- httpunit-1.6.jar

                   |   `-- junit-3.8.2.jar

    [4]       配置項目web.xml

    在項目web.xml中添加如下內容:

             <servlet>

                       <servlet-name>ServletRedirector</servlet-name>

                       <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>

                       <init-param>

                                <param-name>param1</param-name>

                                <param-value>value1 used for testing</param-value>

                       </init-param>

             </servlet>

     

             <servlet>

    <servlet-name>ServletTestRunner</servlet-name>                <servlet-class>org.apache.cactus.server.runner.ServletTestRunner</servlet-class>

             </servlet>

             <servlet-mapping>

                       <servlet-name>ServletRedirector</servlet-name>

                       <url-pattern>/ServletRedirector</url-pattern>

             </servlet-mapping>

     

             <servlet-mapping>

                       <servlet-name>ServletTestRunner</servlet-name>

                       <url-pattern>/ServletTestRunner</url-pattern>

             </servlet-mapping>

    [5]       創建Servlet

    創建LoginServlet,代碼如下:

    import java.io.IOException;

    import java.io.PrintWriter;

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class LoginServlet extends HttpServlet {

             private static final long serialVersionUID = 1L;

             public LoginServlet() {

                       super();

             }

             public void destroy() {

                       super.destroy(); // Just puts "destroy" string in log

                       // Put your code here

             }

             public void doGet(HttpServletRequest request, HttpServletResponse response)

                                throws ServletException, IOException {

                       response.setContentType("text/html");

                       PrintWriter out = response.getWriter();

                       out

                                         .println("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">");

                       out.println("<HTML>");

                       out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");

                       out.println(" <BODY>");

                       out.print("    This is ");

                       out.print(this.getClass());

                       out.println(", using the GET method");

                       out.println(" </BODY>");

                       out.println("</HTML>");

                       out.flush();

                       out.close();

             }

             public void doPost(HttpServletRequest request, HttpServletResponse response)

                                throws ServletException, IOException {

                       response.setContentType("text/html");

                       PrintWriter out = response.getWriter();

                       out

                                         .println("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">");

                       out.println("<HTML>");

                       out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");

                       out.println(" <BODY>");

                       out.print("    This is ");

                       out.print(this.getClass());

                       out.println(", using the POST method");

                       out.println(" </BODY>");

                       out.println("</HTML>");

                       out.flush();

                       out.close();

             }

             public String getServletInfo() {

                       return "This is my default servlet created by Eclipse";

             }

             public void init() throws ServletException {

             }

        public void saveSession(HttpServletRequest request)

        {

                 String testparam = request.getParameter("testparam");

                 request.getSession().setAttribute("testAttribute", testparam);

        }

    }

    [6]       修改項目web.xml,添加servlet映射

    web.xml中添加如下內容:

             <servlet>

                       <servlet-name>LoginServlet</servlet-name>

                       <servlet-class>LoginServlet</servlet-class>

             </servlet>

     

             <servlet-mapping>

                       <servlet-name>LoginServlet</servlet-name>

                       <url-pattern>/login</url-pattern>

             </servlet-mapping>

    [7]       創建Servlet測試類

    創建TestLoginServlet,代碼如下:

    import java.io.IOException;

    import javax.servlet.ServletException;

    import junit.framework.Test;

    import junit.framework.TestSuite;

    import org.apache.cactus.ServletTestCase;

    import org.apache.cactus.WebRequest;

    import com.meterware.httpunit.WebResponse;

    public class TestLoginServlet extends ServletTestCase {

             public TestLoginServlet(String theName) {

                       super(theName);

             }

             public static Test suite() {

                       return new TestSuite(TestLoginServlet.class);

             }

             public void beginSaveSessionOk(WebRequest webRequest) {

                       webRequest.addParameter("testparam", "it works!");

             }

             public void testSaveSessionOk() {

                       LoginServlet servlet = new LoginServlet();

                       servlet.saveSession(request);

                       assertEquals("it works!", session.getAttribute("testAttribute"));

             }

             public void endSaveSessionOk(WebResponse response) {

                       System.out.println("end save session ok");

             }

             public void beginDoGet(WebRequest webRequest) {

                       webRequest.addParameter("testparam", "it works!");

             }

             public void testDoGet() {

                       LoginServlet servlet = new LoginServlet();

                       try {

                                servlet.doGet(request, response);

                       } catch (ServletException e) {

                                e.printStackTrace();

                       } catch (IOException e) {

                                e.printStackTrace();

                       }

             }

    }

    [8]       復制測試結果報表樣式

    下載http://jakarta.apache.org/cactus/misc/cactus-report.xsl

    復制cactus-report.xsl到項目的根目錄。

    在測試結果顯示時需要此樣式。

    [9]       驗證目錄結構

    執行完以上操作, 目錄結構如下圖:

    .

    |-- src

    |   |-- LoginServlet.java

    |   `-- TestLoginServlet.java

    `-- WebRoot

        |-- cactus-report.xsl

        |-- index.jsp

        |-- META-INF

        |   `-- MANIFEST.MF

        `-- WEB-INF

            |-- cactus.properties---

            |-- classes

            |   |-- LoginServlet.class

            |   `-- TestLoginServlet.class

            |-- lib

            |   |-- cactus.core.framework.uberjar.javaEE.14-1.8.1.jar

            |   |-- cactus.integration.ant-1.8.1.jar

            |   |-- cactus.integration.shared.api-1.8.1.jar

            |   |-- commons-codec-1.4.jar

            |   |-- commons-httpclient-3.1.jar

            |   |-- commons-logging-1.1.jar

            |   |-- httpunit-1.6.jar

            |   `-- junit-3.8.2.jar

            `-- web.xml

    [10]   啟動服務

    [11]   執行測試

    在瀏覽器地址欄,輸入:

    http://localhost:8080/ServletTestDemo/ServletTestRunner?suite=TestLoginServlet,回車,測試結果如下:

      <?xml version="1.0" encoding="UTF-8" ?>
    - <testsuites>
    - <testsuite name="TestLoginServlet" tests="2" failures="0" errors="0" time="0.524">
      <testcase name="testSaveSessionOk" time="0.517" />
      <testcase name="testDoGet" time="0.006" />
      </testsuite>
      </testsuites>



    此測試結果是以xml的形式顯示。

    如果結構以html報表的形式顯示,可以輸入如下地址:

    http://10.0.3.133:8080/ServletTestDemo/ServletTestRunner?suite=TestLoginServlet&xsl=cactus-report.xsl

    回車,結果如下:

    Unit Test Results

    Designed for use with Cactus.


    Summary

    Tests Failures Errors Success rate Time
    2 0 0 100.00% 0.527
    Note: failures are anticipated and checked for with assertions while errors are unanticipated.


    TestCase TestLoginServlet

    Name Status Type Time(s)
    testSaveSessionOk Success 0.516
    testDoGet Success 0.010

     

    Back to top
    [12]    



    |----------------------------------------------------------------------------------------|
                               版權聲明  版權所有 @zhyiwww
                引用請注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2010-10-18 15:30 zhyiwww 閱讀(1737) 評論(1)  編輯  收藏 所屬分類: 軟件測試

    FeedBack:
    # re: 使用cactus實現對servlet進行單元測試
    2011-04-26 10:41 | lindalai
    我剛學Cactus測試,很受用,謝謝!但是我有一個問題想問一下:我在測試以html形式顯示時,不能顯示結果,而是顯示如下:
    無法顯示 XML 頁。
    使用 XSL 樣式表無法查看 XML 輸入。請更正錯誤然后單擊 刷新按鈕,或以后重試。


    --------------------------------------------------------------------------------

    文檔的頂層無效。處理資源 'http://localhost:8080/JUnitTest/cactus-report.xsl' 時出錯。第 1 行,位置: 23

    <?xml version="1.0" ?>

    請問這是怎么回事呢?  回復  更多評論
      
    主站蜘蛛池模板: 亚洲18在线天美| 毛片高清视频在线看免费观看| 亚洲av手机在线观看| 亚洲一区AV无码少妇电影| 无遮免费网站在线入口| 亚洲一区二区无码偷拍| 日本免费一区尤物| 免费精品视频在线| 午夜亚洲国产成人不卡在线| 一级一黄在线观看视频免费| 久久精品亚洲福利| 久久黄色免费网站| 亚洲成人高清在线观看| 性感美女视频在线观看免费精品 | 中文字幕看片在线a免费| 亚洲中文字幕无码爆乳av中文| 国产免费高清69式视频在线观看 | 成年轻人网站色免费看| 亚洲精品无码成人| 亚洲Aⅴ无码一区二区二三区软件| xxxx日本在线播放免费不卡| 亚洲成a人片在线观看无码 | 人成电影网在线观看免费| a级亚洲片精品久久久久久久| 毛片在线全部免费观看| 国产精品亚洲精品| 亚洲中文字幕无码专区| www视频免费看| 男男gvh肉在线观看免费| 久久久久久久尹人综合网亚洲| 2015日韩永久免费视频播放 | 国产免费一区二区三区免费视频 | 亚洲国产黄在线观看| 成全视频高清免费观看电视剧| 亚洲成av人片在线看片| 免费国产在线观看| 免费A级毛片在线播放| 欧美日韩亚洲精品| 亚洲狠狠久久综合一区77777| 大学生一级特黄的免费大片视频| 精品多毛少妇人妻AV免费久久|