struts单元测试内容介绍
struts单元测试内容介绍
自动化测试可以减缓我们的压力,在重构时增强信心。
在J2ee体系中,分层(tier)设计的思想大家都已经比较熟悉了,在持久层和业务层的测试比较简单,使用junit就可以了,但是涉及到web容器,例如对struts部分的测试,就比较麻烦了,我以前也一直是只对service层作单元测试的,即首先保证facade层不出错。我对web层的测试的概念一直认为是作并发性访问压力测试,性能测试的,没想过作功能性的单元测试。
今天接触到一个新东东 - StrutsTestCase for JUnit,它支持两种测试:提供Mock 对象方法和Cactus方法。不仅可以测试Action对象的实现,而且可以测试mappings,from beans以及forwards声明.
当前的版本是StrutsTest2.1.3,好象仅支持struts1.1,使用时需要引入strutstest-2.1.3.jar以及junit.jar。
主页为 http://sourceforge.net/projects/strutstestcase/
把它自带的例子(基于Mock的)试着走了一下,觉得掌握起来非常容易,不用启动jsp容器就可以自动地测试了。
//MockStrutsTestCase是扩展自TestCase的
public class TestLoginAction extends MockStrutsTestCase {
public void testSuccessfulLogin() {
//搭建请求到达此action时的环境:request参数 session中用到的对象等
addRequestParameter("username","deryl");
addRequestParameter("password","radar");
setRequestPathInfo("/login");
//调用该路径对应的Action实例的方法
actionPerform();
//断言Forward和预期是否一致
verifyForward("success");
verifyForwardPath("/main/success.jsp");
//断言是否作了action应该作的事,例如向session中置了一个对象。
assertEquals("deryl",getSession().getAttribute("authentication"));
//断言没有错误被捕获
verifyNoActionErrors();
}
}
接着就可以看看让人愉悦的绿色状态条了。一般情况下,还可以写一个test验证未通过的方法.
由于还没有在项目中实际使用,它的实际效果如何还不好说,是否能够对开发效率有一定的提高呢?反正知道有这么一种测试struts的方法总没有坏处吧。