Blog上这几天关于这个话题讨论的很热列,问题的产生就是在单元测试验收返回结果时,通过代码量比较大,为了简化比较代码,我们提出了传入对象比较的方式,对于实现方法,大家说了很多,我也有一个想法,请大家参考一下。

我的想法主要是通过包装unitils属性比较的功能来实现。
先来熟悉一下unitils属性断言:

unit

 
从上面可以看出它已经可以支持属性比较的方法,只不过并不是我们最终想要的,但我们只要包装一下
testutil
这里还增加了关于对象中包含List情况下的判断,主要过程就是通过传递List 属性的名字加上分隔符“:”再加上要比较的对象的属性名就可以了,注意区别子对象名加“.”对象属性名的情况,这个是unitils本身支持的。还是举个使用的例子,一个user Object ,包含一个address的List,一个family的子对象。
user
family
address
下面的调用的情况
invok
还要多说一句的是,使用上面的方法,当对象不相等时,出错的信息,非常友好,会告诉什么地方,那个属性错了。当然这个方法应还可以再扩展,以应对更复杂的情况。