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
。