【永恒的瞬间】
☜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开发中广泛使用的几个框架之一,而StrutsTest正是专门负责测试strut应用程序的Mock测试框架。

使用目的

       StrtusTest junit 的扩展,使用它,不需要启动 servlet 容器就可以方便的测试 struts 应用程序(容器外测试)。它也是属于使用 Mock 对象测试,但是与 EasyMock 不同的是, EasyMock 是提供了创建 Mock 对象的 API ,而 StrutsTest 则是专门负责测试 Struts 应用程序的 Mock 对象测试框架。除了容器外测试, StrutsTest 也可以很方便的用容器内的测试。

       当前的版本是 StrutsTest2.1.0 ,在这个版本中不支持 Struts1.0 。如果需要测试 struts1.0 的应用程序,对应的版本是 StrutsTest2.0 。可以从 http://sourceforge.net/projects/strutstestcase/ 下载。

用法

1.        基本步骤:

-           书写 struts action

-           确定需要进行测试的方式: Mock 对象则选用 MockStrutsTestCase 作为基类; Cactus 方式则选用 CactusStrutsTestCase ;这两种方式以下的步骤都是一样的。

-           使用 setUp tearDown 进行初始化,明确这两个函数的第一句话是调用 super 的方法。

-           设置要测试的 struts action 的路径,方便 strutstest 能找到 web.xml struts 相关的配置文档。

-           设置 action strtus-config.xml 中对应的 path 名称。

-           设置 action 需要使用的各个参数值到 request 对象中,包括 action 所使用的 formbean 的值。

-           执行 action

-           验证 action 的返回路径是否正确,即 forward 的名字。

-           验证 action 相关的其余部分。

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

public class DeparmentDBActionTest extends MockStrutsTestCase {

    public DeparmentDBActionTest(String arg0) {

          super(arg0);

    }

public void setUp(){

         super.setUp();

// 指明 web 应用的根

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

        setContextDirectory(contextFile);

    }

    protected void tearDown() throws Exception {

        super.tearDown();

    }

    public void testDoAdd() {

        // 设置 action path

        setRequestPathInfo("/dpEdit");

        // 准备 action 所需要的 formbean 的参数

        addRequestParameter("method", "doAdd");

        addRequestParameter("pageId", "1");

        addRequestParameter("dpname"," 测试部门 ");

        addRequestParameter("dptype"," 测试部门 ");

        addRequestParameter("yn","n");

        // 执行 action

        actionPerform();

        // 验证返回的 forward

        verifyForward("success");

    }

3.        主要函数和作用:

-           setContextDirectory ,设置 web 应用的根

-           setRequestPathInfo ,设置 request 的请求

-           addRequestParameter ,将参数和对应的值加入 request

-           actionPerform ,执行这个请求

-           verifyForward ,验证 forward 的名字是否正确

-           verifyForwardPath ,验证 forward path 是否正确

-           verifyNoActionErrors ,验证在 action 执行过程中没有 ActionError 产生

-           verifyActionErrors ,验证在 action 执行过程中产生的 ActionError 集合的内容

具体详细的内容请参见对应的 javaDoc

4.        测试 Tile 。其基本过程与上面类似,不同之处在于验证:使用 verifyTilesForward verifyInputTilesForward

5.        测试子模块。其基本过程也和上面一样,不同之处在于需要指定该模块所需要使用的 struts-config.xml 和调用方式:

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

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

-           其次,指明调用的路径:

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

检查表

       使用 StrutsTest 需要注意的地方:

-           TestCase 中可以访问 request session 等对象, StrutsTest 为我们提供了访问接口。

-           junit assert 函数和 fail 函数都可以在 StrutsTest 中使用。

对于文件上载,目前 StrutsTest 并没有什么特别好的方案。具体参见 StrusTest Faq

posted on 2007-01-12 20:10 ☜♥☞MengChuChen 阅读(291) 评论(0)  编辑  收藏 所属分类: struts

只有注册用户登录后才能发表评论。


网站导航: