在一般的环境下,编写单元测试的代码是很方便的。
但是,如果对于向servlet这样需要容器支持才能运行的代码,该如何进行单元测试呢?
有一种办法是将servlet中所有的业务逻辑写到一个单独的类中,这样就可以对这个类进行单元测试,但是总是感觉有很大的限制。
还有没有更好的办法啊?
在一般的环境下,编写单元测试的代码是很方便的。
但是,如果对于向servlet这样需要容器支持才能运行的代码,该如何进行单元测试呢?
有一种办法是将servlet中所有的业务逻辑写到一个单独的类中,这样就可以对这个类进行单元测试,但是总是感觉有很大的限制。
还有没有更好的办法啊?
“将servlet中所有的业务逻辑写到一个单独的类”
是已经形成了模式,没有人会将业务逻辑直接写在Servlet中。
因为你错误的编程模式,导致无法方便地测试你的业务逻辑。
的确不应该把业务逻辑直接放到servlet中来完成
但是,即使是将业务逻辑的代码放到专门实现业务逻辑的类中处理,往往它也需要使用由servlet传入的request或reponse。比如struts中的Action类(按照通常的说法,Action中应该是业务逻辑处理的抽象)也需要由ActionServlet传入的request和reponse。这样的话,如何对Action进行测试?
理想的情况应该是处理业务逻辑的类中不包含任何与servlet相关的内容,这样才能较好的进行测试。但是不知道这样可不可行?
试试cactus
JBuilder8以后对cactus提供了集成环境支持
http://jakarta.apache.org/cactus/index.html
有没有其他的办法?如果不用cactus这样的测试框架的话?
httpunit和junit工具结合使用,是否能满足你的需求??确实,不因该将业务逻辑写道servlet中。