亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用cactus,jetty實現(xiàn)對servlet類進行單元測試一

系統(tǒng) 2374 0

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

JUnit 也是有缺點的。想象一下,你有一個 web 程序,非常簡單的那種,是用 servlet 實現(xiàn)的,你希望對其中的 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 來創(chuàng)建一個可用的請求。因為 HttpServletRequest 的生命周期是由容器管理的,因此你無法單獨使用 JUnit loginUser 方法編寫測試類。

? ?? 此時我們今天的主角就要出來了,它就是 cactus cactus 是什么?仙人掌嗎?呵呵,當然不是了。仙人掌只是它翻譯過來的中文名。它如 commons-dbutils commons-beanutils 等等一樣,是 apache 上的一個開源框架。下載地址為 http://jakarta.apache.org/cactus/index.html 或是 http://archive.apache.org/dist/jakarta/cactus/ ? 用官網(wǎng)是話說, 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 的工作原理在官網(wǎng)上也可以找到,那有詳細的說明,以下是其中的一種: 圖來自于cactus官網(wǎng)

用cactus,jetty實現(xiàn)對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

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

我們將使用 Cactus ServletTestRedirector 作為上圖介紹的 Redirector Proxy ,并使用 Cactus ServletTestRunner 作為執(zhí)行測試時的 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實現(xiàn)對servlet類進行單元測試一


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91精品视频在线看 | 亚洲国产精品婷婷久久 | 欧美啪啪小视频 | 久久是免费只精品热在线 | 天堂成人精品视频在线观 | 一级毛片 在线播放 | 免费高清a毛片 | 中文字幕一级毛片视频 | 曰鲁夜鲁鲁狠狠综合 | 国产一区二区在线视频观看 | 欧美大胆一级视频 | 亚洲乱强伦 | 黄色.www| 日日夜夜摸 | 免费观看日本污污ww网站精选 | 亚洲国产精久久小蝌蚪 | 97久久伊人精品影院 | 国产一级特黄aa级特黄裸毛片 | 一级特级aaa毛片 | 成人看片免费无限观看视频 | 精品国产96亚洲一区二区三区 | 国产二级毛片 | 亚洲国产精品欧美日韩一区二区 | 欧美成成人免费 | 亚洲在线免费观看 | 国产免费久久精品丫丫 | 日本中文字幕在线视频 | 亚洲最大视频网 | 天天干天天操天天玩 | 91福利免费 | bbw下身丰满18ⅹxxⅹ | 奇米影视在线播放 | 爱操tv| 久久青草91免费观看 | 日韩伦理亚洲欧美在线一区 | 成人xxx视频 | 成人性a激情免费视频 | 亚洲精品一区二区综合 | 一区二区日韩欧美 | 午夜黄色影院 | 奇米影视亚洲色图 |