struts 单元测试

本文介绍了如何使用StrutsTestCase for JUnit进行Struts应用的单元测试。通过Mock对象方法,无需web容器即可测试Action对象及mappings、form beans和forwards声明。示例代码展示了如何设置请求参数并验证Action的执行结果,如Forward和Session对象。这是一种提高开发效率的可能方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动化测试可以减缓我们的压力,在重构时增强信心。
在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的方法总没有坏处吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值