【永恒的瞬間】
          ?Give me hapy ?

          StrutsTest:

          http://strutstestcase.sourceforge.net/

          StrutsTestCase: The tool for Struts unit testing:

          http://sourceforge.net/docman/display_doc.php?docid=19672&group_id=39190

          EasyMock使用手冊:

          http://dev.csdn.net/Develop/article/article/28/article/28/article/28/article/28/28583.shtm

          ??? Struts是目前在web開發(fā)中廣泛使用的幾個框架之一,而StrutsTest正是專門負(fù)責(zé)測試strut應(yīng)用程序的Mock測試框架。

          使用目的

          ?????? StrtusTest junit 的擴(kuò)展,使用它,不需要啟動 servlet 容器就可以方便的測試 struts 應(yīng)用程序(容器外測試)。它也是屬于使用 Mock 對象測試,但是與 EasyMock 不同的是, EasyMock 是提供了創(chuàng)建 Mock 對象的 API ,而 StrutsTest 則是專門負(fù)責(zé)測試 Struts 應(yīng)用程序的 Mock 對象測試框架。除了容器外測試, StrutsTest 也可以很方便的用容器內(nèi)的測試。

          ?????? 當(dāng)前的版本是 StrutsTest2.1.0 ,在這個版本中不支持 Struts1.0 。如果需要測試 struts1.0 的應(yīng)用程序,對應(yīng)的版本是 StrutsTest2.0 。可以從 http://sourceforge.net/projects/strutstestcase/ 下載。

          用法

          1. ?????? 基本步驟:

          - ????????? 書寫 struts action

          - ????????? 確定需要進(jìn)行測試的方式: Mock 對象則選用 MockStrutsTestCase 作為基類; Cactus 方式則選用 CactusStrutsTestCase ;這兩種方式以下的步驟都是一樣的。

          - ????????? 使用 setUp tearDown 進(jìn)行初始化,明確這兩個函數(shù)的第一句話是調(diào)用 super 的方法。

          - ????????? 設(shè)置要測試的 struts action 的路徑,方便 strutstest 能找到 web.xml struts 相關(guān)的配置文檔。

          - ????????? 設(shè)置 action strtus-config.xml 中對應(yīng)的 path 名稱。

          - ????????? 設(shè)置 action 需要使用的各個參數(shù)值到 request 對象中,包括 action 所使用的 formbean 的值。

          - ????????? 執(zhí)行 action 。

          - ????????? 驗證 action 的返回路徑是否正確,即 forward 的名字。

          - ????????? 驗證 action 相關(guān)的其余部分。

          2. ?????? 使用例子(采用 Mock 方式):

          public class DeparmentDBActionTest extends MockStrutsTestCase {

          ??? public DeparmentDBActionTest(String arg0) {

          ??? ?? ?? super(arg0);

          ??? }

          public void setUp(){

          ?????? ? super.setUp();

          // 指明 web 應(yīng)用的根

          ??? ????File contextFile = new File("D:\\Projects\\fog\\implement\\web");

          ??????? setContextDirectory(contextFile);

          ??? }

          ??? protected void tearDown() throws Exception {

          ??????? super.tearDown();

          ??? }

          ??? public void testDoAdd() {

          ??????? // 設(shè)置 action path

          ??????? setRequestPathInfo("/dpEdit");

          ??????? // 準(zhǔn)備 action 所需要的 formbean 的參數(shù)

          ??????? addRequestParameter("method", "doAdd");

          ??????? addRequestParameter("pageId", "1");

          ??????? addRequestParameter("dpname"," 測試部門 ");

          ??????? addRequestParameter("dptype"," 測試部門 ");

          ??????? addRequestParameter("yn","n");

          ??????? // 執(zhí)行 action

          ??????? actionPerform();

          ??????? // 驗證返回的 forward

          ??????? verifyForward("success");

          ??? }

          3. ?????? 主要函數(shù)和作用:

          - ????????? setContextDirectory ,設(shè)置 web 應(yīng)用的根

          - ????????? setRequestPathInfo ,設(shè)置 request 的請求

          - ????????? addRequestParameter ,將參數(shù)和對應(yīng)的值加入 request

          - ????????? actionPerform ,執(zhí)行這個請求

          - ????????? verifyForward ,驗證 forward 的名字是否正確

          - ????????? verifyForwardPath ,驗證 forward path 是否正確

          - ????????? verifyNoActionErrors ,驗證在 action 執(zhí)行過程中沒有 ActionError 產(chǎn)生

          - ????????? verifyActionErrors ,驗證在 action 執(zhí)行過程中產(chǎn)生的 ActionError 集合的內(nèi)容

          具體詳細(xì)的內(nèi)容請參見對應(yīng)的 javaDoc

          4. ?????? 測試 Tile 。其基本過程與上面類似,不同之處在于驗證:使用 verifyTilesForward verifyInputTilesForward

          5. ?????? 測試子模塊。其基本過程也和上面一樣,不同之處在于需要指定該模塊所需要使用的 struts-config.xml 和調(diào)用方式:

          - ????????? 首先,指定所需要的 struts-config.xml

          setConfigFile("mymodule","/WEB-INF/struts-config-mymodule.xml");

          - ????????? 其次,指明調(diào)用的路徑:

          setRequestPathInfo("/mymodule","/login.do");

          檢查表

          ?????? 使用 StrutsTest 需要注意的地方:

          - ????????? TestCase 中可以訪問 request 、 session 等對象, StrutsTest 為我們提供了訪問接口。

          - ????????? junit assert 函數(shù)和 fail 函數(shù)都可以在 StrutsTest 中使用。

          -? 對于文件上載,目前 StrutsTest 并沒有什么特別好的方案。具體參見 StrusTest Faq 。

          posted on 2007-01-12 20:10 ???MengChuChen 閱讀(312) 評論(0)  編輯  收藏 所屬分類: struts
          主站蜘蛛池模板: 徐水县| 清原| 沿河| 大余县| 饶平县| 偏关县| 竹山县| 聂荣县| 抚远县| 兴安县| 镇远县| 湖州市| 鲜城| 奈曼旗| 山东省| 湖口县| 南康市| 霍山县| 嘉鱼县| 汤原县| 玛纳斯县| 南投市| 噶尔县| 弋阳县| 莱芜市| 曲阳县| 边坝县| 江津市| 利津县| 和平区| 渝中区| 锡林浩特市| 清镇市| 肇东市| 临沧市| 同仁县| 新乐市| 克山县| 含山县| 安丘市| 砀山县|