接口测试 DUBBO,RMI 接口测试中,关于真实对象和构造的对象比较问题

jeff.yu · 2016年05月18日 · 最后由 孙高飞 回复于 2016年05月19日 · 2080 次阅读

DUBBO,RMI 接口测试中,返回的都是 JAVA 对象,现在要做成自动化
所以这边就构造了预期返回的对象,准备和真实返回的对象作比较,逻辑是将对象中的每个字段值都要比较到。
并且对象比较复杂,对象中不仅包含各种类型,而且会嵌套对象,开发那边没有实现 equals 方法
请问有现成的工具可以使用么,还是只能写 if else + 递归了
比如这种对象的比较:

class A{

    private Object B b;
    private List<C> Clist;
    private String s;
    private Map<String,List<D>> map;
}
共收到 7 条回复 时间 点赞

转 JSON equals

可以试试 测试开发之路 ---- 可读性,可维护性,可扩展性 里提到的责任链模式,自己实现一个。

#1 楼 @taki 说的对. 直接转 json 去做 diff 即可. 所有的数据结构都可以被转换为 xml 或者 json 这种结构化的数据. 然后做对比即可.

#3 楼 @seveniruby 有些对象的字段是随机生成的例如id,转成 json 去做 diff 的话有些时候不满足需求。而且如果 json 太长的话不太容易找到哪里出错的。所以我还是偏向于反射加责任链的解决思路。当然了,转 json 很简单。自己写一套东西毕竟要花时间

#4 楼 @ycwdaaaa 随机 id 这种通过字段的黑名单跳过即可. json 太长通过格式化也可以解决. 有些框架能直接对比出具体字段的差异. 精准到告诉你是哪个字段的多少偏移不一样的. 当然责任链也很不错.

#6 楼 @seveniruby 恩。我想了想。自己实现一个责任链成本是有点高。直接用现有的框架就行了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册