[请教]Junit测试web开发中的ActionBean的业务方法

07-07-25 gltbeyond
Junit测试可以使我们的代码建立在一个正确的基础上。

我们大多做web开发,采用MVC模式,因为我们的ActionBean里面的callback方法的代码Transaction Script, 纯过程式的代码,都是千行以上的代码。

因为业务逻辑的复杂,实现时都使用简单的条件判断,维护和添加新业务时,测试是很重要的,实现新的功能,又不能败坏原来的逻辑。

过程:本地修改,使用log、System.out.println()打印程序轨迹,make后上传到web服务器,重启服务器,然后模拟各种数据去测试。。。

我们是否可以将ActionBean脱离J2ee容器运行,进行测试? 应该可以。

Junit测试定位在单元测试,

并且要为被测试方法准备必须的环境。

难点就在此,稍微有点规模的MVC框架,都对request的数据进行了封装,为了测试我们的ActionBean的业务方法,必须模拟ActionBean的运行环境。

在ActionBean的运行环境比较复杂的情况下,我是否可以做个替代类

比如采用Mock代替HttpRequest,只需为请求配置好交易数据,传递/注射给ActionBean的方法?

不知道想法是否正确,希望知道的大哥指点下,谢谢。

    

1
banq
2007-07-26 10:17
思路是可以的。

不过注意JUNIT是单元测试,这个单元也就是使用OO细粒度划分后的单元,所以,OO是前提,象你这样一整块测试,是一个大单元,类似集和测试,测试意义不大,因为逻辑没有细分,都混合在一起,测试条件会复杂,这样测试效果就很差,单元测试往往是针对简单测试条件下精确测试。

所以,有专门业务层,将业务和request这些底层基础机制尽可能分离,才是测试有效的最基本保证。

相关文章:

Unit testing with mock objects

http://www.ibm.com/developerworks/library/j-mocktest.html

JMock

http://www.jmock.org/

gltbeyond
2007-07-29 21:53
谢谢指点!

Junit,jMock都是UT工具,测试业务逻辑的确不大合适,也没多大意义。

我们公司使用自己的开发平台,在假定平台比较稳定的情况下,我们coder必须保证上千行的业务逻辑代码没问题,现在我们只通过简单的System.out和log.debug看看业务逻辑代码的流程...

维护过程式脚本是件十分痛苦的事情!!

jmock is Super Good!

gltbeyond
2007-07-29 22:14
问题依旧, 如何加快web开发中业务逻辑的测试(本地)。

因为web开发中的JavaBean要make,compile到服务器,还要重启服务器或者刷新app,太多coder同时使用一个开发测试环境,几乎乱了套。。

让我们的java ActionBean脱离java web容器,在开发者本地运行测试。

这个测试也许不叫UT了,但构建web运行环境太麻烦。。

jmock maybe help me..

banq
2007-07-30 11:19
主要业务需要脱离Web容器测试,为达到这个目的,整个系统必须进行OO重构,使用OO方法对原来纠缠在一起的逻辑进行细分。

现在Java中测试框架都是基于OO前提的,所以,如果你的系统不是OO的,就很难找到合适的测试工具,或者依赖那些SQL测试及Profiler工具,这些不只是倒退,简直很难执行。

[该贴被banq于2007年07月30日 11:19修改过]

猜你喜欢
2Go 1 2 下一页