简介
Struts2 的Junit测试,可以加快开发调试速度,不用每次更改Action后都重新编译部署等。
-
优点
- 编写、返回快速,调试方便。特别是对返回JSON的Action更是方便 缺点
- 只能获取到Action返回的数据,看不到页面效果
实现
1. 导入 struts2-junit-plugin 插件
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>${struts2.version}</version>
<scope>test</scope>
</dependency>
2. 编写测试类
基础基类有4个,如果有Spring集成,一般使用StrutsSpringTestCase类
通过重写getContextLocations类来重新设置Spring XML加载路径
基类 | 描述 |
---|---|
StrutsJUnit4TestCase | |
StrutsSpringTestCase | 使用Spring管理依赖 |
StrutsSpringJUnit4TestCase | |
StrutsTestCase |
实例
实例描述了一个通过Action Uri查找对应Action,执行后检测其执行结果的例子。
public class ExampleActionTest extends StrutsSpringTestCase {// StrutsTestCase
public static final Log logout = LogFactory.getLog(ExampleActionTest.class);
@Test
public void testListExample() throws Exception {
try {
//设置 请求参数
request.setParameter("accountBean.userName", "Bruc");
request.setParameter("accountBean.password", "test");
//获取要测试Action
ActionProxy proxy = getActionProxy("/example/example_listExample.action");
ExampleAction ea = (ExampleAction) proxy.getAction();
proxy.execute();
//获取Action中执行结果
JsonMsgBean jsonMsgBean = ea.getJsonMsgBean();
logout.info(jsonMsgBean.msg);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected String[] getContextLocations() {
//重设 Spring XML路径
return new String[] { "classpath*:spring/appContext-*.xml" };
}
}