我们通常在开发web应用过程中,展现层Action的单元测试经常被我们忽视了,主要原因是:
1、Action层的业务逻辑比较简单。大家潜意识认为这一部分的代码不重要。
2、Action层难以模拟http请求传递参数,需要依赖web容器,因此给单元测试编写带来一定的难度。
我写了一个简单的Action单元测试用例,供大家参考。基于struts的mock和webwork的ActionProxyFactory都可以进行Action的单元测试。我个人比较倾向与ActionProxyFactory做单元测试。其实写action单元测试非常简单,大致分为三步就可以完成单元测试:
一、设置ActionContext上下文参数
将表单传递的请求参数添加到map中
二、创建Action动态代理对象
通过public abstract ActionProxy createActionProxy(String namespace, String actionName, Map extraContext) throws Exception 创建action代理对象。
三、junit断言执行结果
assertEquals(testAction.login(),”suclearcase/" target="_blank" >ccess”)
详细用例参考:
public class TestActionTest extends BaseCaseTest{
private ActionProxy proxy = null;
private IVoucherService voucherService;
@Before
public void setUp() throws Exception {
IMocksControl control = EasyMock.createControl();
voucherService = control.createMock(IVoucherService.class);