作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!
预备
- jakarta-cactus-1.8.0
- junit-3.8.2.jar
配置

1、从 http://jakarta.apache.org/cactus/ 下载jakarta-cactus-1.8.0-bin.zip,解压后将lib目录下面的所有*.jar文件复制到应用的WEB-INF/lib目录下。jar文件清单如下:
- aspectjrt-1.5.3.jar
- cactus.core.framework.uberjar.javaEE.14-1.8.0.jar
- cactus.integration.ant-1.8.0.jar
- cactus.integration.shared.api-1.8.0.jar
- cargo-ant-0.9.jar
- cargo-core-uberjar-0.9.jar
- commons-httpclient-3.1.jar
- commons-logging-1.1.jar
- httpunit-1.6.jar
- jasper-compiler-5.5.9.jar
- jasper-runtime-5.5.9.jar
- junit-3.8.2.jar
- list.txt
- nekohtml-1.9.6.jar
- org.mortbay.jetty-5.1.9.jar
- servlet-api-2.4.jar
2、在WEB-INF/classes目录下建立cactus.properties文件,文件内容示例如下:
|
|
实践
Servlet测试
被测试类 LoginServlet 源代码:
|
|
测试类 LoginServletCactusTest 源代码:
|
|
测试入口类AllServletTest 源代码:
|
|
在eclipse中执行 Run –> Run As –> Junit Test 即可。(注意:是将AllServletTest当Junit Test运行)
Filter 测试
被测试类 IPFilter 源代码:
|
|
被测试类 IPFilterCactusTest 源代码:
|
|
测试入口类 AllFilterTest 源代码:
|
|
在eclipse中执行 Run –> Run As –> Junit Test 即可。(注意:是将AllFilterTest 当Junit Test运行)
故障处理
故障1
运行Filter的集成测试时出现如下异常信息:
org.apache.cactus.util.ChainedRuntimeException: Failed to get the test results at [http://localhost:8080/test/FilterRedirector]
at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody0(DefaultHttpClient.java:93)
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)
………………
org.apache.cactus.internal.client.ParsingException: Not a valid response [404 %2Fimpp4cmcc%2FFilterRedirector+Not+Found]
at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.callGetResult(DefaultHttpClient.java:212)
at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody0(DefaultHttpClient.java:88)
………………
解决方法:在cactus.properties 中加入 cactus.jetty.resourceDir 的配置。
故障2:连接被拒绝
1)有可能是firewall阻止了端口的访问;
2)Jetty 没有启动。
故障3 - web.xml解析失败
原有web.xml的配置如下:
|
|
采用Cactus + Jetty5 集成测试时会失败,原因是Jetty5不支持这样的配置,改用如下方式解决:
|
|
参考
http://jakarta.apache.org/cactus/integration/manual/howto_config.html