V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
likre
V2EX  ›  Java

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

  •  
  •   likre · 2023-11-09 09:44:14 +08:00 via Android · 2162 次点击
    这是一个创建于 375 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用的 java

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

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

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

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

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

    总的来说,通过使用单元测试和集成测试,以及利用工具来帮助你审查代码,你可以相对自动地确保在转化过程中没有遗漏或者多余的字段。--------from ChatGPT
    julyclyde
        10
    julyclyde  
       2023-11-09 13:08:12 +08:00
    单元测试只是“one of 你可以做的事”
    而不是“one of 可以实现目标的方法”
    stephniebuewke
        11
    stephniebuewke  
       2023-11-09 14:04:23 +08:00
    Aresxue
        12
    Aresxue  
       2023-11-13 11:33:39 +08:00
    这个场景反射就是最简单的方案。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6276 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.