Cactus容器测试入门

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

我们在web.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 >



然后我们写一个简单的Servlet来进行测试:

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);
    }

}


对于此Servlet在xml的配置我就不写了.想必你也了然于心了吧.

来看看我们的测试类:

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"));
    }

}



部署之后,启动Tomcat,访问:

http://localhost:8080/test/ServletTestRunner?suite=TestSampleServlet
这时候你会看到输出 :

<? 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 >


看来程序没有大问题,已经正确执行.不过这时提示有一个类找不到.
对于这个问题我们可以去http://commons.apache.org/downloads/download_codec.cgi下载.

这个xml看起来多少不习惯.我们可以下载xsl把它转换成html格式.
点此下载 把它放到你web应用的根目录下.

这个时候你可以访问如下地址:
http://localhost:8080/test/ServletTestRunner?suite=TestSampleServlet&xsl=cactus-report.xsl

这时候你就会看到友好的Html格式了:
HTML output of ServletTestRunner

々上善若水々 2008-06-01 01:11 发表评论
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值