This topic created in 962 days ago, the information mentioned may be changed or developed.
用的 java
有三个 dto ,a ,b ,c
a 有个 mapper 方法转化为 b ,b 有个 mapper 方法转化位 c
里面可能是简单的 get set ,也可能有时间转化等转化方法,也可能有逻辑控制转化的逻辑。
有什么办法能自动化地知道 a 到 b 再到 c 的过程中,漏了哪些字段,多了哪些字段呢?
12 replies • 2023-11-13 11:33:39 +08:00
 |
|
2
manasheep Nov 9, 2023
序列化成 json ,然后生成 json patch ?
|
 |
|
4
jianming348 Nov 9, 2023
用 jackson 或 Gson 将数据转成 map 类型,然后对比 keys 的数量
|
 |
|
5
chendy Nov 9, 2023
反射拿所有 getter 方法 然后放一起对比
|
 |
|
6
likre Nov 9, 2023 via Android
反射拿字段很简单,主要是对比很难受,字段又多,mapper 的方法又长。。
|
 |
|
7
dddd1919 Nov 9, 2023
如果只是简单的同名字段映射,把所有属性粘出来排个顺序,找个文本 diff 工具一目了然
|
 |
|
8
nerkeler Nov 9, 2023 via Android
fastjson 自定义注解转换
|
 |
|
9
YangtzeHuanghe Nov 9, 2023 via iPhone
你可以考虑使用单元测试来确保在 a 到 b 到 c 的转化过程中没有遗漏或者多余的字段。
首先,你可以为每个 DTO 编写单元测试,测试这些转化方法是否按预期工作。在测试中,你可以使用断言来验证转化后的对象是否包含了正确的字段和值。
其次,你可以编写一些集成测试,测试整个转化过程是否正确执行。这可以包括将 a 转化为 b ,再将 b 转化为 c ,然后验证 c 是否包含了所有正确的字段和值。
另外,你也可以考虑使用一些代码静态分析工具或者代码审查工具来检查你的代码,以确保没有漏掉或者多余的字段。
总的来说,通过使用单元测试和集成测试,以及利用工具来帮助你审查代码,你可以相对自动地确保在转化过程中没有遗漏或者多余的字段。--------from ChatGPT
|
 |
|
10
julyclyde Nov 9, 2023
单元测试只是“one of 你可以做的事” 而不是“one of 可以实现目标的方法”
|
 |
|
12
Aresxue Nov 13, 2023
这个场景反射就是最简单的方案。
|