obj-compare是一款基于Java反射的轻量级对象比较工具。不仅支持常见的POJO对象、集合对象、数组类型比较功能,也支持高度自定义比较定制等功能。
适用场景
- 单测结果对比以及单测mock框架中参数匹配
- 业务领域中快照对比记录
- 测试领域数据对比
- 文本/json内容对比
- 一些需要自定义比较的场景
功能列表
- 普通POJO、Boolean、Date、数组类型比较
- 容器类List、Set、Map及其子类比较
- 支持自定义类型比较
- 支持自定义属性过滤
- 循环依赖检查、宽松模式等特性
5分钟快速开始
引入Maven依赖
<dependency> <groupId>org.smartboot.compare</groupId> <artifactId>obj-compare</artifactId> <version>1.0.7</version> </dependency>
示例代码
@Test public void testCompareSimple() { User expect = new User(); expect.setId("1"); expect.setPassword("111212"); expect.setUsername("Tom"); expect.setSex("male"); User target = new User(); target.setId("2"); target.setPassword("1112112"); target.setUsername("Jerry"); target.setSex("male"); CompareResult result = CompareHelper.compare(expect, target); System.out.println(result); Assert.assertFalse(result.isSame()); }
结果输出
================ ProcessId : 3b8e5d0c-2b4d-45e8-ac0f-e1feeaff15d9 =============== ● Result : false ● Options : ● Differences : 3 ● Recycle : 0 ● Escaped : 173 ● MaxDepth : 1 difference details : 1:CommonDifference@ROOT.id, 期望值为 [1], 实际值为 [2] 2:CommonDifference@ROOT.username, 期望值为 [Tom], 实际值为 [Jerry] 3:CommonDifference@ROOT.password, 期望值为 [111212], 实际值为 [1112112] ================ ProcessId : 3b8e5d0c-2b4d-45e8-ac0f-e1feeaff15d9 ===============
评论