大佬们,求教一个技术问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
likre
V2EX    Java

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

  •  
  •   likre 2023-11-09 09:44:14 +08:00 via Android 2608 次点击
    这是一个创建于 709 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用的 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     Solana     2588 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 04:52 PVG 12:52 LAX 21:52 JFK 00:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86