欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 亚洲伦理一区 | 精品中文字幕一区 | 国产成人久久 | 欧美精品黄页在线观看大全 | 欧美高清视频一区 | 日韩一区二区在线视频 | 一级黄色片播放 | 九色九色久综色鬼在线 | 欧美激烈大尺度叫床的床戏 | 天天操天天干天天操 | 三级免费黄色片 | 免费黄色大片在线观看 | 欧洲另类一二三四区 | 激情一区 | 蜜臀AV国产精品久久久久 | 欧美八区 | 伊人网综合 | 伊人久久电影网 | 激情五月综合婷婷 | 久久成人在线视频 | 欧美另类69xxx | 99久久久精品国产一区二区 | 日韩高清一区 | 青娱乐免费视频 | 五月综合久久 | 亚洲97| 国产裸体bbb视频 | 色婷婷久久 | 亚洲精品不卡 | 亚州国产 | 国产精品视频在线观看 | 午夜av成人 | 一级做一级爱a做片性视频视频 | 欧美一区二区三区在线观看免费 | 国产成人综合日韩精品婷婷九月 | 91丁香亚洲综合社区 | 国产成人自拍一区 | www.黄色网.com | 亚洲欧美日韩一区二区 | 色婷五月天 | 91网站在线免费观看 |