[ISSUE]how to perform unit testing in J2EE enviornment?

不吃羊肉 03-08-06

Hi, guys

i take a look at the doc of Cactus but it seems that the cactus could test only Servlet and EJB etc.

the issue is: if there is some independent tier(for example: Action class in struts, or Service in OFbiz) in the application.
the essential problem is that all these methods depent on the run-time context such as HttpSession, HttpRequest, etc. how can i perform the unit test? if anybody can provides some guide or frag of codes, i will really appreciate.

am i clear enough? :)

cinc
2003-08-06 15:34

首先,refactor 你的程序,使这个对象和方法间的耦合变小,特别是把业务相关的方法,从特定的运行环境类里剥离出来,这样可以对业务类单独的做测试。

但是,也确实存在一些对象,和方法,必须在一定的环境里做测试,比如 struts 的 action ,以前,必须运行起 web 服务器,才可以手工测试它。而如果你想有自动运行的测试,推荐使用 strutstestcase

还有,不知你有没有听说过 mock object 这个技术,我也是刚接触它其实 strutstestcase 就是一个很好的 mock object 的实现,它在测试 action 的时候并没有使用真正的 web 环境,而是自己构建了
虚拟的环境,模拟在 web 环境里的 request response,session 等等功能然后在这个虚拟的环境里测试 action

但是,必须考虑的是,建立 mock 环境的工作量也是挺大的。

相关的站点,文章:
structtestcase
http://sourceforge.net/projects/strutstestcase/

mock object 主页:
http://www.mockobjects.com/wiki

这里有篇文章介绍 mock object
ftp://cinc.3322.org/pub/doc/xp/JavaXPCookbook.chm 第六章
(好像第七章是讲 cactus 的)

不吃羊肉
2003-08-06 15:51

thanks too much!
我之前也考虑过用Mock来做单元测试
可惜,没有时间和精力去研究它的实现机制

strutstestcase确实是我现在最需要的

太感谢了