论坛首页 综合技术论坛

请教如何对充血模型进行单元测试

浏览 4235 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-19  
工作流里存在很多充血模型,一方面它是po, 另一方面它也需要进行其他业务操作包括对数据库进行操作。 为了解决这个问题,我们封装了一个spring的beanFactory,通过它往po里注入spring中配置的service 。代码会象这样:
java 代码
 
  1. workItemDAO = (WorkItemDAO) Framework.getEngine().getComponent("workItemDAO");  

问题就在这里,这个beanfactory是当web运行时通过在web.xml中配置一个监听器得到的,单元测试显然是无法获得这个beanfactory的,我该如何单元测试?或者有其他往po注入service的方法?
   发表时间:2007-09-19  
引用
单元测试显然是无法获得这个beanfactory的

显然这是不成立的
0 请登录后投票
   发表时间:2007-09-19  
我想gigix误解我的意思了,是可以在单元测试里获得beanfactory的,但是在我不修改原有被测试代码的情况下,被测试代码获得不到。
0 请登录后投票
   发表时间:2007-09-19  
我明白了
Hibernate的po可以在生命周期回调上面做依赖注射。去我以前的blog(http://gigix.blogdriver.com)搜索吧。
0 请登录后投票
   发表时间:2007-09-19  
Domain对象不推荐对外部产生依赖吧。特别是依赖于DAO这样的东西。
0 请登录后投票
   发表时间:2007-09-20  
taowen 写道
Domain对象不推荐对外部产生依赖吧。特别是依赖于DAO这样的东西。

我认为dao里有太多的字符串逻辑了。。。。如果不用数据库很难找出错误来。
我用hsql来提作这一部分
0 请登录后投票
   发表时间:2007-09-20  
汗,在javaeye呆得越久越觉得没信心,发现越来越多的东西不懂,比如本贴及各位的跟贴。学习中。。。。。。
0 请登录后投票
   发表时间:2007-09-20  
taowen 写道
Domain对象不推荐对外部产生依赖吧。特别是依赖于DAO这样的东西。

对,原则上是这样,但是情况比较特殊(比如,执行节点的时候要产生工作项,时间服务等等,而节点实例就是PO,如果把行为从对象上剥离反而会更难以理解)。
昨天晚上想了想,初步想法是修改Framework这个类,增加一个注入beanfactory的方法,单元测试时手工注入
0 请登录后投票
   发表时间:2007-09-20  
taowen 写道
Domain对象不推荐对外部产生依赖吧。特别是依赖于DAO这样的东西。

理论上是这样没错
不过我总是遇到有那么一两个特例
每个规则都有特例,不是么
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics