Struts2单元测试 使用Junit测试Action

  使用Struts2的Junit Plugin测试Action是非常的方便的,如果在开发中采用TDD模式的话推荐使用。不说废话了,直入主题,已具体实例说话!

1、在原有的Struts2工程加入JUnitPlugin和它依赖的Spring包:

  

struts2-junit-plugin-2.1.8.jar

struts2-convention-plugin-2.1.8.jar <p>org.springframework.core-3.0.3.RELEASE.jar</p> org.springframework.test-3.0.3.RELEASE.jar

*补充:在Eclipse中要导入servlet-api.jar、jsp-api.jar包(转载者)。

2、新建个Action,我这里采用的Annotation的方式,可以实现零配置。TestAction.java

@Result(location = "/index.jsp") <p>publicclassTestActionextendsActionSupport{</p> <p>privateStringparam;</p> <p>publicStringexecute(){</p> <p>returnSUCCESS;</p> <p>}</p> <p>publicStringgetParam(){</p> <p>returnparam;</p> <p>}</p> <p>publicvoidsetParam(Stringparam){</p> <p>this.param=param;</p> <p>}</p> }

3、在工程中添加JUnit包(此步骤略了,搞不定这部的就不要看此篇文章啦!),创建TestCase,TestActionTest.java

import java.robinleex.action.TestAction; <p>importorg.apache.struts2.StrutsTestCase;</p> <p>importorg.junit.Test;</p> <p>importcom.opensymphony.xwork2.ActionProxy;</p> <p>publicclassTestActionTestextendsStrutsTestCase{</p> <p>@Test</p> <p>publicvoidtestExecute()throwsException{</p> <p>ActionProxyproxy=null;</p> <p>TestActiontest=null;</p> <p>request.setParameter("param","test...");</p> <p>proxy=getActionProxy("/test.action");</p> <p>test=(TestAction)proxy.getAction();</p> <p>Stringresult=proxy.execute();</p> <p>assertEquals("success",result);</p> <p>assertEquals("test...",test.getParam());

<p>}</p> }

跑起来就可以了,非常好用,这个示例测试在Action当中传入一个参数并取出参数值。JUnitPlugin会模拟Servlet容器,模拟出HttPServletRequest,HttpServletResponse,ServletContext,PageContext...

转自:http://blog.chinaunix.net/u3/117605/showart_2292982.html

相关推荐