<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://www.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" ?>

    請問這是怎么回事呢?  回復  更多評論
      
    主站蜘蛛池模板: 亚洲AV无码AV男人的天堂不卡| 亚洲色图激情文学| 国产特黄一级一片免费| 亚洲国产精品嫩草影院久久| 免费国产草莓视频在线观看黄| 国产一区二区三区免费在线观看 | 久久国产亚洲高清观看| 国产精品视频白浆免费视频| 亚洲av日韩av激情亚洲| 久久精品毛片免费观看| 亚洲精品第一综合99久久| 国产精品黄页在线播放免费| 黄色毛片免费网站| 亚洲中文字幕不卡无码| 麻豆精品成人免费国产片| 久久久久亚洲AV无码麻豆| 一个人看的www在线观看免费| 亚洲色偷偷偷综合网| 亚洲国产婷婷综合在线精品| 中文字幕无线码中文字幕免费| 亚洲四虎永久在线播放| 男女做羞羞的事视频免费观看无遮挡| 亚洲色大成网站WWW国产| 亚洲伦乱亚洲h视频| 毛片在线播放免费观看| 亚洲一区精彩视频| 久久久久一级精品亚洲国产成人综合AV区 | 久久久久久精品免费免费自慰| 国产.亚洲.欧洲在线| www.91亚洲| 67pao强力打造高清免费| 亚洲av日韩av永久无码电影| 亚洲日韩精品无码专区网址| 在线观看免费视频资源| 真人无码作爱免费视频| 久久久久亚洲AV片无码| 天天干在线免费视频| 叮咚影视在线观看免费完整版| 亚洲精品一二三区| 国产亚洲一区二区三区在线观看 | 国产一区二区三区免费视频 |