请教如何使用Junit对包含get,set方法的VO进行相等的比较测试(高难,菜鸟勿入)

lanchong512 2005-10-18 03:08:52
目前很多系统的model层面的入口和出口都是VO,而编写测试用例的时候势必要涉及到VO的比较,因为VO中什么类型都有可能存在,所以是不是可以做出一个抽象的BaseVO里面包含可以继承和不用再复写的equals方法,目前有个想法,但还是觉得困惑,下面是我的想法:

如果把一个正确的VO串行化到文件里,比较的时候再读入,这样就有了两个VO对象,但是因为VO里面的类型比较多,很多也许还不能串行化的,所以能不能写一个通用的方法比较两个VO是不是equal?
...全文
384 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanchong512 2005-10-21
  • 打赏
  • 举报
回复
不小心贴错了,请版主帮忙删除楼上的回复,谢谢.
lanchong512 2005-10-21
  • 打赏
  • 举报
回复
1.でNIC1(10.49.61.57)のネットワークアドレスは10.49.61.57 & 255.255.255.0 = 10.49.61.0であり、
NIC2(192.168.3.2)のネットワークアドレスは192.168.3.2 & 255.255.255.0 = 192.168.3.0である。

プリンタ1(10.49.61.222)のネットワークアドレスは10.49.61.222 & 255.255.255.0 = 10.49.61.0であり、
上記のNIC1のネットワークアドレス(10.49.61.0)と同じであるからNear Me上に表示する。
プリンタ2(192.168.3.2)のネットワークアドレスは192.168.3.2 & 255.255.255.0 = 192.168.3.0であり、
上記のNIC2のネットワークアドレス(192.168.3.0)と同じであるからNear Me上に表示されなければならない。
lanchong512 2005-10-21
  • 打赏
  • 举报
回复
谢谢 doomwarrior 大力支持,昨天在翻查文档,如果可以写出一个通用的vo比较函数,或者找到了解决方案就回来发帖,暂时不结贴.
doomwarrior 2005-10-20
  • 打赏
  • 举报
回复
反射不是可以直接获得类的各方法名以及它们的限制符和返回类型么
根据返回类型判断就行了
lanchong512 2005-10-20
  • 打赏
  • 举报
回复
To doomwarrior:
你说的这个比较可行,如何确定属性是不是复杂对象?还有基本类型里面的确定相等的方法好像也不尽相同,难道要群举吗?

doomwarrior 2005-10-20
  • 打赏
  • 举报
回复
查文档就好了....

假设比较vo1和vo2

首先 vo1.getClass 和vo2.getClass 比较
然后 vo1.getClass().getDeclaredMethods(); //获得属性名和方法名

Method method =
vo1.getClass().getMethod(刚才取得的方法名, types);
Object result =
method.invoke(vo1, new Object[0]);


然后埃个result 比较.......

这么一细想才发现...重载equal会方便不少(如果你能改写vo源代码的话)...

很久没写过代码了,所以只能凭记忆.....想详细了解的话还是去查文档吧
lanchong512 2005-10-20
  • 打赏
  • 举报
回复
是的,但是以前没有写过这方面的代码,API不太熟悉,能不能提供一个例子?^_^
doomwarrior 2005-10-19
  • 打赏
  • 举报
回复
自己写个比较方法,例如VOequal之类
用反射先比较两个vo的方法是不是相同,然后再比较属性(类型比较复杂的,直接调用get方法比较,如果get返回的是复杂对象,就递归)是不是相同,所有都相同,返回true。。
ssssssssssssssss 2005-10-19
  • 打赏
  • 举报
回复
重写equal方法

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧