您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > Cactus
用Cactus來測試J2ee應用
作者:網(wǎng)絡轉載 發(fā)布時間:[ 2012/11/29 14:52:41 ] 推薦標簽:

public void testAddUser() throws javax.ejb.EJBException{
servlet.addUser(request,response) ;
}
public void testFindAll(){
java.util.Iterator i=servlet.findAll() ;
//assertEquals(null,i);
boolean ok=false;
while(i.hasNext() ){
if(((User)i.next()).getName().equals("nameValue")) {
ok=true;
};
}
this.assertTrue(ok) ;
}
public void testFindByName() throws javax.ejb.EJBException {
User u=servlet.findByName("nameValue") ;
UserInfo ui=u.getUserInfo() ;
this.assertEquals("email",ui.getEmail()) ;
this.assertEquals("tel",ui.getTel()) ;
this.assertEquals("nameValue",u.getName()) ;
this.assertEquals("passValue",u.getPassword()) ;

}

public void testDel() throws javax.ejb.EJBException {

servlet.delUser("nameValue8") ;

}
public void testDelAll() throws javax.ejb.EJBException {
servlet.delAll() ;
}

public static void main(String[] theArgs)
{
junit.textui.TestRunner.main(new String[]{
ManaServletTest.class.getName()});
}
public static Test suite()
{

return new TestSuite(ManaServletTest.class);
}

}

public class ManaServletTest extends ServletTestCase 我們要測試的是一個servlet,所以我們繼承ServletTestCase,如果你測試jsp的話,繼承JspTestCase.

public ManaServletTest(String theName) {
super(theName);
}

和junit一下,ServletTestCase不允許使用默認的構造函數(shù),所以必須使用一個帶參數(shù)的構造函數(shù),并且調用 父類的構造函數(shù)。

public void setUp(){

try {
servlet.init() ;
}
catch (ServletException ex) {
ex.printStackTrace() ;
this.fail() ;
}
}
public void tearDown(){

}

setUp是在測試類運行時候首先被調用的辦法,在這里可以進行一些數(shù)據(jù)初始化之類的工作。在這里我們調用了 servlet.init().

在測試類運行的時候需要顯式的調用servlet的init()方法。因為cactus在測試servlet的時候是實例化一個ser vlet的,不會調用inti(),而servlet enginer在調用的時候是會自動調用servlet的init()方法的。tearDown方 法在測試完成的時候運行,進行一些必要的數(shù)據(jù)處理,比如刪除一些測試數(shù)據(jù)等,這里我們沒有做任何工作。

public void beginAddUser(WebRequest theRequest)
{
theRequest.addParameter("name", "nameValue");
theRequest.addParameter("pass","passValue") ;
theRequest.addParameter("tel","telValue") ;
theRequest.addParameter("address","addressValue") ;
theRequest.addParameter("email","emailValue");

}
public void testAddUser() throws javax.ejb.EJBException{
servlet.addUser(request,response) ;
}

在Cactus中,你需要用testXXX來命名你的方法,這樣Cactus會自動調用這個方法進行測。而BeingXXX則是在調 用test方法之前調用,也是說在一個功能測試之前運行。這里我們現(xiàn)在beginAddUser中添加一些必要的參數(shù) 。WebRequest是Cactus提供的一個類,它允許你設置一些Http參數(shù),如果你使用了 theRequest.addParameter("name","nameValue"),那么在servlet中你可以用request.getParameter("name") 來取得name的值。當然還可以設置Cookie,Http Head參數(shù)。在testAddUser()方法中我們測試addUser方法,如 果測試有異常,則會產(chǎn)生EJBException,得到一個測試失敗。

public void testFindByName() throws javax.ejb.EJBException {
User u=servlet.findByName("nameValue") ;
UserInfo ui=u.getUserInfo() ;
this.assertEquals("email",ui.getEmail()) ;
this.assertEquals("tel",ui.getTel()) ;
this.assertEquals("nameValue",u.getName()) ;
this.assertEquals("passValue",u.getPassword()) ;

}

這個測試是測試根據(jù)用戶名查找用戶,之后你可以用assertEquals方法來測試返回的值是否正確。

public static void main(String[] theArgs)
{
junit.textui.TestRunner.main(new String[]{
ManaServletTest.class.getName()});
}

這里我們使用textui來運行我們的測試類,提供文本的測試信息,還有一個Swing的測試方法,一共一個界面, 但是沒有什么太大的意義。

到此我們介紹了所有的主要方法。后我們談談如何運行這個測試。

首先下載Cactus。
把lib/下的jar文件加入到 web app的lib下。以及你客戶端的classpath中,這是保險的,雖然不是所有 的jar都用的著。
設置你的Cactus.找到cactus.properties 文件,把它加入到客戶端的classpath中。
修改cactus.properties 文件,把http://localhost:8080/test改成你相應的設置,test是你web應用的 名稱。其他設置可以不變。
修改服務器端web應用的配置,在web.xml中加入:
<?xml version="1.0" encoding="ISO-8859-1"?>
<filter>
<filter-name>FilterRedirector</filter-name>
<filter-class>org.apache.cactus.server.FilterTestRedirector</filter-class>
</filter>

<filter-mapping>
<filter-name>FilterRedirector</filter-name>
<url-pattern>/FilterRedirector</url-pattern>
</filter-mapping>

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

<servlet>
<servlet-name>JspRedirector</servlet-name>
<jsp-file>/jspRedirector.jsp</jsp-file>
</servlet>

<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>JspRedirector</servlet-name>
<url-pattern>/JspRedirector</url-pattern>
</servlet-mapping>

編譯ejb和servlet,把EJB文件的jar,和servlet的war文件打包成 ear文件。
發(fā)布你的ear文件到web application.
運行本地的測試文件ManaServletTest.class
哈哈~~,終于完成了所有的工作,我們可以看看運行結果,"哦,不",居然出現(xiàn)了一個Error,那是你的程序出現(xiàn)了問題,仔細看看吧,測試是不會騙你的 :) 。 以上代碼在 win2000+JBOSS3.0+MySql MAX 3.24+Cactus1.3上運行成功。

上一頁12345下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd