cactus java,使用cactus实现对servlet进行单元测试

使用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中添加如下内容:

ServletRedirector

org.apache.cactus.server.ServletTestRedirector

param1

value1 used for testing

ServletTestRunner                org.apache.cactus.server.runner.ServletTestRunner

ServletRedirector

/ServletRedirector

ServletTestRunner

/ServletTestRunner

[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("//W3C//DTD HTML 4.01 Transitional//EN"">");

out.println("");

out.println(" 

A Servlet");

out.println(" 

");

out.print("    This is ");

out.print(this.getClass());

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

out.println(" ");

out.println("");

out.flush();

out.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out

.println("//W3C//DTD HTML 4.01 Transitional//EN"">");

out.println("");

out.println(" 

A Servlet");

out.println(" 

");

out.print("    This is ");

out.print(this.getClass());

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

out.println(" ");

out.println("");

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中添加如下内容:

LoginServlet

LoginServlet

LoginServlet

/login

[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]复制测试结果报表样式

复制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]执行测试

在浏览器地址栏,输入:

-

-

此测试结果是以xml的形式显示。

如果结构以html报表的形式显示,可以输入如下地址:

回车,结果如下:

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

posted on 2010-10-18 15:30 zhyiwww 阅读(1553) 评论(1)  编辑  收藏 所属分类: 软件测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值