大佬们,求教一个技术问题

2023-11-09 09:44:14 +08:00
 likre
用的 java

有三个 dto ,a ,b ,c
a 有个 mapper 方法转化为 b ,b 有个 mapper 方法转化位 c
里面可能是简单的 get set ,也可能有时间转化等转化方法,也可能有逻辑控制转化的逻辑。

有什么办法能自动化地知道 a 到 b 再到 c 的过程中,漏了哪些字段,多了哪些字段呢?
2199 次点击
所在节点    Java
12 条回复
KOMA1NIUJUNSHENG
2023-11-09 09:46:37 +08:00
看源码
manasheep
2023-11-09 09:49:52 +08:00
序列化成 json ,然后生成 json patch ?
SirYuxuan
2023-11-09 09:51:13 +08:00
aop 反射 逐个字段对比
jianming348
2023-11-09 09:54:17 +08:00
用 jackson 或 Gson 将数据转成 map 类型,然后对比 keys 的数量
chendy
2023-11-09 09:56:29 +08:00
反射拿所有 getter 方法
然后放一起对比
likre
2023-11-09 09:59:35 +08:00
反射拿字段很简单,主要是对比很难受,字段又多,mapper 的方法又长。。
dddd1919
2023-11-09 11:35:00 +08:00
如果只是简单的同名字段映射,把所有属性粘出来排个顺序,找个文本 diff 工具一目了然
nerkeler
2023-11-09 11:36:23 +08:00
fastjson 自定义注解转换
YangtzeHuanghe
2023-11-09 12:28:52 +08:00
你可以考虑使用单元测试来确保在 a 到 b 到 c 的转化过程中没有遗漏或者多余的字段。

首先,你可以为每个 DTO 编写单元测试,测试这些转化方法是否按预期工作。在测试中,你可以使用断言来验证转化后的对象是否包含了正确的字段和值。

其次,你可以编写一些集成测试,测试整个转化过程是否正确执行。这可以包括将 a 转化为 b ,再将 b 转化为 c ,然后验证 c 是否包含了所有正确的字段和值。

另外,你也可以考虑使用一些代码静态分析工具或者代码审查工具来检查你的代码,以确保没有漏掉或者多余的字段。

总的来说,通过使用单元测试和集成测试,以及利用工具来帮助你审查代码,你可以相对自动地确保在转化过程中没有遗漏或者多余的字段。--------from ChatGPT
julyclyde
2023-11-09 13:08:12 +08:00
单元测试只是“one of 你可以做的事”
而不是“one of 可以实现目标的方法”
stephniebuewke
2023-11-09 14:04:23 +08:00
Aresxue
2023-11-13 11:33:39 +08:00
这个场景反射就是最简单的方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/990117

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX