日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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) ?編輯 ?收藏 所屬分類: 軟件測試

總結

以上是生活随笔為你收集整理的cactus java,使用cactus实现对servlet进行单元测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。