» 您尚未 登录   注册 | 社区服务 | FTP中心 | 帮助 | 社区 | 无图版 | 测试百科  | 测试Blog 
软件测试基地论坛 -> 测试开发技术 -> JUnit Gossip: 第一個 Cactus + Tomcat 測試
 XML   RSS 2.0   WAP 

--> 本页主题: JUnit Gossip: 第一個 Cactus + Tomcat 測試 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
Fastpoint


该用户目前不在线
级别: 总版主
精华: 44
发帖: 5033
基地声望: 390 点
基地币: 1689 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子

JUnit Gossip: 第一個 Cactus + Tomcat 測試

良葛格   大家通过 http://caterpillar.onlyfun.net/Gossip/index.html 找到他






來看看如何使用Cactus配合Tomcat來運行一個簡單的Servlet測試,我們先取得Cactus相關檔案,請至 Cactus 官方網站 下載,下載後解開壓縮檔案,將其下lib目錄中的commons-logging-xxx.jar、aspectjrt-xxx.jar、cactus- xxx.jar、commons-httpclient-xxx.jar與junit-xxx.jar放置在您的Web應用程式的WEB-INF/lib 目錄下。

您將使用Cactus的ServletTestRedirector作為之前介紹的Redirector Proxy,並使用Cactus的ServletTestRunner作為執行測試時的TestRunner,這兩個被撰寫為Servlet,所以您在 web.xml中加以定義:

web.xml <?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">

  <description>
    Cactus Demo
  </description>
  <display-name>Cactus Demo</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-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>
</web-app>

接下來您先撰寫測試案例,您將測試Servlet,所以要繼承ServletTestCase:

LoginServletTest.java package onlyfun.caterpillar.test;

import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import onlyfun.caterpillar.LoginServlet;
public class LoginServletTest extends ServletTestCase {  
  public void beginValidUser(WebRequest webRequest) {
    webRequest.addParameter("username", "justin");
    webRequest.addParameter("password", "123456");
  }
 
  public void testValidUser() {
    LoginServlet loginServlet = new LoginServlet();
    assertTrue(loginServlet.isValidUser(request));
  }
  public void beginInValidUser(WebRequest webRequest) {
    webRequest.addParameter("username", "guest");
    webRequest.addParameter("password", "123456");
  }
 
  public void testInValidUser() {
    LoginServlet loginServlet = new LoginServlet();
    assertFalse(loginServlet.isValidUser(request));
  }
}


TestRunner會呼叫beginXXX()方法(如果有的話),beginXXX()方法接收一個WebRequest 參數,您可以透過這個物件設定一些HTTP相關的訊息,例如加入使用者名稱與密碼,每一個testXXX()配合一個beginXXX()方法,所以名稱上必須符合,beginXXX()方法會在testXXX()方法之前被呼叫。

在testXXX()方法中您可以看到我們使用request名稱,在接收到請求之後,Container 會產生相關的資源物件,ServletTestRedirector會將這些物件設定給request名稱來參考,request即 ServletRequest物件,之後您可以使用這些相關物件來執行測試。

根據測試案例的內容,您可以撰寫LoginServlet:

LoginSerlvet.java package onlyfun.caterpillar;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet {
  public boolean isValidUser(HttpServletRequest request) {
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    if(username == null ||
      password == null ||
      !username.equals("justin") ||
      !password.equals("123456")) {
        return false;
    }
    else {
        return true;
    }
  }
}


接下來可以啟動Container了,可以開啟瀏覽器並指定以下的網址來進行測試:
http://localhost:8080/cactusDemo/ServletTestRunner?suite=onlyfun.caterpillar.test.LoginServletTest

執行的結果會以XML傳回:

<testsuites> <testsuite name="onlyfun.caterpillar.test.LoginServletTest"         tests="2" failures="0" errors="0" time="0.781">   <testcase name="testValidUser" time="0.625"/>   <testcase name="testInValidUser" time="0.062"/>   </testsuite> </testsuites>

您也可以直接取得Cactus網站上提供的 cactus-report.xsl,並將之放在Web應用程式的目錄下,然後使用以下的方式來取得較易閱讀的訊息:

http://localhost:8080/cactusDemo/ServletTestRunner?suite=onlyfun.caterpillar.test.LoginServletTest&xsl=cactus-report.xsl

一個執行的結果網頁畫面如下:




您也可以在web.xml中指定cactus-report.xsl的位置,例如:

web.xml ...
  <servlet>
    <servlet-name>ServletTestRunner</servlet-name>
    <servlet-class>
        org.apache.cactus.server.runner.ServletTestRunner
    </servlet-class>
    <init-param>
        <param-name>xsl-stylesheet</param-name>
        <param-value>styles/cactus-report.xsl</param-value>
    </init-param>
  </servlet>
...
之後在運行測試時可以於網址列中如下指定:

http://localhost:8080/cactusDemo/ServletTestRunner?suite=onlyfun.caterpillar.test.LoginServletTest&transform=yes

指定transfer=yes時可以對XML進行轉換,如果不指定的話,直接輸出XML。


可不可不要这么样徘徊在目光内
你会察觉到我根本寂寞难耐
即使千多百个深夜曾在梦境内
我有吻过你这毕竟并没存在

人声车声开始消和逝
无声挣扎有个情感奴隶
是我多么的想她
但我偏偏只得无尽叹谓

其实每次见你我也着迷
无奈你我各有角色范围
就算在寂寞梦内超出好友关系
唯在暗里爱你暗里着迷
无谓要你惹上各种问题
共我道别吧别让空虚使我越轨
[楼 主] | Posted: 2005-10-28 14:16 顶端
lc150688




该用户目前不在线
级别: 测试新手
精华: 0
发帖: 1
基地声望: 1 点
基地币: 6574 Bug
基地贡献: 0 点
好评度: 0 点
在线时间:0(小时)
注册时间:2006-03-02
最后登录:2006-03-02
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



很好!
[1 楼] | Posted: 2006-03-02 16:31 顶端

软件测试基地论坛 -> 测试开发技术




软件测试基地上海测仕信息技术有限公司旗下网站
Copyright © 2005-2007 Cntesting.com, All Rights Reserved
沪ICP备06057721号

Powered by PHPWind Code © 2003-06 PHPWind
Total 0.131606(s) query 5, Time now is:12-05 12:54, Gzip disabled
You can contact us


每日一句:Loading...