欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

用cactus,jetty實現對servlet類進行單元測試一

系統 2454 0

JUnit 是名聲大燥了,想必只要學過 JAVA 的人都知道世上有個東東叫 JUnit 。記得有個想學 JUnit 的兄弟在群上大喊:我要學 JUnit ,因為 JUnit 應用最廣,最好的單元測試工具。無法否認, JUnit 是一個非常讓 JAVA 程度員或白盒測試人員喜愛的一個框架。但有時候應用最廣的未必就是萬能的,最好的未必就是最合適的。

JUnit 也是有缺點的。想象一下,你有一個 web 程序,非常簡單的那種,是用 servlet 實現的,你希望對其中的 loginUser () 方法進行單元測試,代碼如下:

?

package com.test.servlet;

?

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

?

public class LoginServlet extends HttpServlet {

?

??? private static final long serialVersionUID = -5174161414983884806L;

?

??? public boolean loginUser (HttpServletRequest request) {

??????? String username = request.getParameter( "username" );

??????? String password = request.getParameter( "password" );

??? if (username == null || password == null || !username.equals( "cuckoo" )

??????????????? || !password.equals( "123" )) {

??????????? return false ;

??????? } else {

??????????? return true ;

??????? }

??? }

}

?

為了能夠測試這個方法,你需要得到一個合法的 HttpServletRequest 對象。但不幸的是,你不可能調用 new HttpServletRequest 來創建一個可用的請求。因為 HttpServletRequest 的生命周期是由容器管理的,因此你無法單獨使用 JUnit loginUser 方法編寫測試類。

? ?? 此時我們今天的主角就要出來了,它就是 cactus cactus 是什么?仙人掌嗎?呵呵,當然不是了。仙人掌只是它翻譯過來的中文名。它如 commons-dbutils commons-beanutils 等等一樣,是 apache 上的一個開源框架。下載地址為 http://jakarta.apache.org/cactus/index.html 或是 http://archive.apache.org/dist/jakarta/cactus/ ? 用官網是話說, cactus 就是

Cactus is a simple test framework for unit testing server-side java code (Servlets, EJBs, Tag Libs, Filters, ...).

The intent of Cactus is to lower the cost of writing tests for server-side code. It uses JUnit and extends it.

Cactus 是一個基于 JUnit 框架的簡單測試框架,用來單元測試服務端 Java 代碼。 Cactus 框架的主要目標是能夠單元測試服務端的使用 Servlet 對象的 Java 方法 httpServletRequest,HttpServletResponse,HttpSession 等。 Cactus 的工作原理在官網上也可以找到,那有詳細的說明,以下是其中的一種: 圖來自于cactus官網

用cactus,jetty實現對servlet類進行單元測試一

Cactus provides several TestCase classes that extends the JUnit Testcase and it also provides several kind of redirectors (Servlet Redirector, JSP Redirector, ...). The diagram above is a generic diagram which serves to explain the principles. You'll find details for a specific redirector proxy in the next section. YYYTestCase = ( ServletTestCase | FilterTestCase | JspTestCase ) XXX is the name of the test case. Each YYYTestCase class contains several test cases

這是官網的簡單說明,意思是: cactus 提供了幾個 TestCase 的類擴展了 JUnit TestCase 的,同時也提供了若干種轉向器(重定向程序組件, JSP 的重定向, ...). 上圖是一個普通的圖,這足以解釋的原則。你會發現,在未來一段特定的重定向代理細節。 YYYTestCase = ServletTestCase | FilterTestCase | JspTestCase XXX 是測試案例的名稱。每個 YYYTestCase 類包含幾個測試案例。

我們將使用 Cactus ServletTestRedirector 作為上圖介紹的 Redirector Proxy ,并使用 Cactus ServletTestRunner 作為執行測試時的 TestRunner ,這兩個被撰寫為 Servlet ,所以要在 web.xml 中加以定義,代碼為:

<? xml version = "1.0" encoding = "UTF-8" ?>

< web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee"

??? xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

??? xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee

??? http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >

?

??? <!--

??? <description>cactus test</description>

??? <display-name>cactusTest</display-name>

??? ? -->

??? < servlet >

??????? < servlet-name > ServletRedirector </ servlet-name >

??????? < servlet-class > org.apache.cactus.server.ServletTestRedirector </ servlet-class >

??? </ servlet >

??? < servlet >

??????? < servlet-name > ServletTestRunner </ servlet-name >

??????? < servlet-class > org.apache.cactus.server.runner.ServletTestRunner </ servlet-class >

??? </ servlet >

? < servlet >

??? < servlet-name > LoginServlet </ servlet-name >

??? < servlet-class > com.test.servlet.LoginServlet </ servlet-class >

? </ servlet >

?

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

??? < servlet-name > LoginServlet </ servlet-name >

??? < url-pattern > / servlet /LoginServlet </ url-pattern >

? </ servlet-mapping >

? </ web-app >

用cactus,jetty實現對servlet類進行單元測試一


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品一区二区久久久久久按摩 | 成人黄色免费 | 成人久久久久久久久 | 美女污污视频在线观看 | 国产福利视屏 | 亚洲一区二区三区四区精品 | 欧美一级二级三级视频 | 久久9966e这里只有精品 | 国产在线观看午夜不卡 | 久操久操 | 亚洲精品久中文字幕 | 狠狠色欧美亚洲狠狠色五 | 午夜性色一区二区三区不卡视频 | 91精品亚洲 | 一道本视频在线观看 | 国产瑟瑟视频 | 久草成人在线 | 国产不卡免费 | 91精品啪国产在线观看免费牛牛 | 手机在线观看你懂得 | 国产11一12周岁女毛片 | 国产99久久精品一区二区 | 欧美激情刺激爽免费视频观看 | 中文字幕成人av | 亚洲一本| 草草国产成人免费视频 | 精品一区二区三区免费 | 激情视频免费在线观看 | 久久精品国产欧美成人 | 久久精片 | 色综合天天色综合 | 99re热精品视频 | 日韩男女做性高清在线观看 | 日本wwww视频| 能直接看av的网站 | 色婷婷五 | 国产 日韩 欧美在线 | 天天综合欧美 | 一本大道久久a久久综合 | 国产成人a亚洲精品 | 国语一级毛片 |