我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評(píng)論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

          Cactus容器測(cè)試入門

          此文參考: http://jakarta.apache.org/cactus/integration/howto_tomcat.html

          我們?cè)趙eb.xml中的webapp之間加入:
          <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>
          加入mapping:
          <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>


          然后我們寫一個(gè)簡(jiǎn)單的Servlet來進(jìn)行測(cè)試:
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;

          public class SampleServlet extends HttpServlet
          {
              
          public void saveToSession(HttpServletRequest request)
              
          {
                  String testparam 
          = request.getParameter("testparam");
                  request.getSession().setAttribute(
          "testAttribute", testparam);
              }

          }


          對(duì)于此Servlet在xml的配置我就不寫了.想必你也了然于心了吧.

          來看看我們的測(cè)試類:
          import junit.framework.Test;
          import junit.framework.TestSuite;

          import org.apache.cactus.ServletTestCase;
          import org.apache.cactus.WebRequest;

          public class TestSampleServlet extends ServletTestCase
          {
              
          public TestSampleServlet(String theName)
              
          {
                  
          super(theName);
              }


              
          public static Test suite()
              
          {
                  
          return new TestSuite(TestSampleServlet.class);
              }


              
          public void beginSaveToSessionOK(WebRequest webRequest)
              
          {
                  webRequest.addParameter(
          "testparam""it works!");
              }


              
          public void testSaveToSessionOK()
              
          {
                  SampleServlet servlet 
          = new SampleServlet();
                  servlet.saveToSession(request);
                  assertEquals(
          "it works!", session.getAttribute("testAttribute"));
              }

          }



          部署之后,啟動(dòng)Tomcat,訪問:

          http://localhost:8080/test/ServletTestRunner?suite=TestSampleServlet
          這時(shí)候你會(huì)看到輸出 :

          <?xml version="1.0" encoding="UTF-8" ?> 
          - <testsuites>
          - <testsuite name="com.test.servlet.TestServletTest" tests="1" failures="0" errors="1" time="0.516">
          - <testcase name="testSaveSessionToOK" time="0.36">
            
          <error message="org/apache/commons/codec/DecoderException" type="java.lang.NoClassDefFoundError">java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException at org.apache.commons.httpclient.HttpMethodBase.getURI(HttpMethodBase.java:265) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:383) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346) at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect_aroundBody0(HttpClientConnectionHelper.java:144) at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect_aroundBody1$advice(HttpClientConnectionHelper.java:307) at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect(HttpClientConnectionHelper.java:1) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.callRunTest(DefaultHttpClient.java:163) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody0(DefaultHttpClient.java:81) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody1$advice(DefaultHttpClient.java:307) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest(DefaultHttpClient.java:1) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runWebTest(HttpProtocolHandler.java:164) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody0(HttpProtocolHandler.java:83) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody1$advice(HttpProtocolHandler.java:307) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest(HttpProtocolHandler.java:1) at org.apache.cactus.internal.client.ClientTestCaseCaller.runTest(ClientTestCaseCaller.java:145) at org.apache.cactus.internal.AbstractCactusTestCase.runBareClient(AbstractCactusTestCase.java:218) at org.apache.cactus.internal.AbstractCactusTestCase.runBare(AbstractCactusTestCase.java:134) at org.apache.cactus.server.runner.ServletTestRunner.run(ServletTestRunner.java:309) at org.apache.cactus.server.runner.ServletTestRunner.doGet_aroundBody0(ServletTestRunner.java:187) at org.apache.cactus.server.runner.ServletTestRunner.doGet_aroundBody1$advice(ServletTestRunner.java:225) at org.apache.cactus.server.runner.ServletTestRunner.doGet(ServletTestRunner.java:1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)</error> 
            
          </testcase>
            
          </testsuite>
            
          </testsuites>

          看來程序沒有大問題,已經(jīng)正確執(zhí)行.不過這時(shí)提示有一個(gè)類找不到.
          對(duì)于這個(gè)問題我們可以去http://commons.apache.org/downloads/download_codec.cgi下載.

          這個(gè)xml看起來多少不習(xí)慣.我們可以下載xsl把它轉(zhuǎn)換成html格式.
          點(diǎn)此下載 把它放到你web應(yīng)用的根目錄下.

          這個(gè)時(shí)候你可以訪問如下地址:
          http://localhost:8080/test/ServletTestRunner?suite=TestSampleServlet&xsl=cactus-report.xsl

          這時(shí)候你就會(huì)看到友好的Html格式了:
          HTML output of ServletTestRunner


          posted on 2008-06-01 01:11 々上善若水々 閱讀(3268) 評(píng)論(1)  編輯  收藏 所屬分類: 軟件測(cè)試

          評(píng)論

          # re: Cactus容器測(cè)試入門  回復(fù)  更多評(píng)論   

          Hello....

          Thanks a lot.... it helped me to run my first cactus program
          2012-11-12 19:01 | Cyril
          主站蜘蛛池模板: 民县| 启东市| 梁山县| 札达县| 沁源县| 府谷县| 大宁县| 阳江市| 尚义县| 泰兴市| 丰都县| 镇坪县| 瑞金市| 阳朔县| 清新县| 高要市| 凤庆县| 株洲市| 郯城县| 海门市| 于田县| 资源县| 涞源县| 泾源县| 邹城市| 本溪市| 息烽县| 佛坪县| 北宁市| 衡阳县| 麟游县| 闵行区| 若羌县| 临城县| 兴宁市| 八宿县| 隆德县| 深水埗区| 定安县| 自治县| 安仁县|