解惑

解己之惑,解人之惑

日:2006年12月11日

使用Command分离可能的递归依赖

在完成这个EJB单元测试框架的CMP的时候,核心应该就是成功使用Command模式,框架在初始化的时候会自动初始化需要使用的Entity Bean,包括Entity Bean之间的依赖关系,但是如果在初始化的时候,一个Entity Bean依赖另外一个还没有初始化的Entity Bean,而所依赖的那个Entity Bean又依赖这个Entity Bean,就会形成循环依赖。我使用Command模式,讲这个依赖关系放到一个Command里面,然后在一个Entity Bean的基本属性初始化完成以后再执行Command队列初始化那些关系,就不会形成循环依赖了。

代码如下:
阅读全文

使用分类提高速度

这个是我做这个单元测试框架最大的感受,原来的代码存在两个使用大List的地方,一个是MockEJB自己带的AspectSystemImpl,它把所有的Aspect放在一个List然后查找匹配的,后来我修改了实现,按照不同的Bean放到不同List再用一个Map分类,一举提高20倍速度,然后我又修改了原来Command队列的实现,使用同样的原理,也提高了30%的性能。
所以如果你的代码中也使用到了List之类的集合,添加到里面的东西比较多,要进行比较或者某种查找,那么进行简单的分类可能是提高性能的关键。分类功能简单的使用一个HashMap就可以了。

总算是初步完成了EJB单元测试框架

经过一段时间的努力,我总算是初步完成了这个EJB单元测试框架,现在运行那些测试用例(183个,难易不等)只需要60秒左右,我挑选出来的一个做为样例的Session Bean的代码行覆盖率达到94%,而Branch覆盖率为100%。
明天计划说服其它的人使用这个框架辅助他们的开发,虽然这个是单元测试,但是因为不用启动JBoss也可以调试Session Bean和Action,我想使用它辅助开发也是个不错的主意(我们的JBoss启动需要至少2分钟,一般都是在3分钟以上)。另外一个进行辅助开发的原因是我们的时间很紧,原本计划在这个版本中要求新的功能必须有单元测试的要求可能也要取消了,那我辛辛苦苦完成的框架可能要拖到至少明年3月以后才可能被使用了,夜长梦多啊。
另外一个考虑就是他们写的测试用例越多,可能发现的问题也越多,也好帮助我更加完善这个框架。另外就是可能会要求我增加更多的功能辅助他们的验证工作。

© 2025 解惑

本主题由Anders Noren提供向上 ↑