如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 296 编程语言
通常在开发web应用过程中,展现层Action的单元测试很少人对他有所了解,我们今天看看怎么编写action的单元测试
基于struts的mock和webwork的ActionProxyFactory都可以进行action的单元测试。
比较建议用ActionProxyFactory做单元测试
写action单元测试非常简单,分三步就可以完成单元测试。
第一步:
设置actionContext上下文参数
将表单传递的请求参数添加到map中
详细用例参考:
public class TestActionTest extends BaseCaseTest{
private ActionProxy proxy = null;
private IVoucherService voucherService;
第二步
创建action动态代理对象
通过public abstract ActionProxy createActionProxy(String namespace, String actionName, Map extraContext) throws Exception 创建action代理对象。
@Before
public void setUp() throws Exception {
IMocksControl control = EasyMock.createControl();
voucherService = control.createMock(IVoucherService.class);
MapString, Object> params = new HashMapString, Object>();
第三步:
junit断言执行结果
assertEquals(testAction.login(),"success")
params.put(”loginId”,”test”);
params.put(”password”,”111111″);
params.put(”voucherService”, voucherService);
Map extraContext = new HashMap();
extraContext.put(ActionContext.PARAMETERS,params);
创建代理action一定要执行proxy.execute()方法,否则参数不能够增加到actionContext上下文中。
try {
proxy = ActionProxyFactory.getFactory().createActionProxy(”/user”, “testAction”, extraContext);
proxy.setExecuteResult(false);
assertEquals(proxy.execute(),”success”);
} catch (Exception e) {
e.printStackTrace();
proxy.execute()中会执行 invocation.invoke()核心方法,遍历执行action中所有的拦截器,包括其中的参数拦截器。
@Test
public void testLogin() {
TestAction testAction = (TestAction) proxy.getAction();
assertEquals(testAction.login(),”success”);
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 296 编程语言
web图表开发工具FineReport:[11]连续分组,数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示,这样的报表可以通过相邻连续分组来实现。......
2023-03-17 519 编程语言