You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JUnit5测试用例比较两个二维数组时断言失败如何解决

问题原因

  • 断言方法使用错误:JUnit5的assertEquals用于比较数组时,本质是判断两个数组对象的内存地址是否相等(Java数组的equals方法继承自Object类,未重写为内容比较逻辑),哪怕两个多维数组的元素完全一致,只要是不同的实例对象,调用assertEquals都会返回失败。
  • 手动构造的预期数组和实际结果存在内容差异:
    • 预期数组corpusB中写的是s melly(中间带空格),实际读取到的内容是smelly
    • 预期数组corpusB中brother对应的翻译是frere,实际读取到的翻译是free

解决方案

  1. 修正预期数组corpusB的内容错误,和实际读取结果对齐:
String[][] corpusB = {
        {"the","le"},
        {"the","la"},
        {"jellyfish","meduse"},
        {"boy","garcon"},
        {"dances","danse"},
        {"with","avec"},
        {"lazy","paresseux"},
        {"smelly","puante"}, // 去掉单词中间的空格
        {"dog","chien"},
        {"family","famille"},
        {"house","maison"},
        {"brother","free"}, // 修正为实际输出的翻译内容
        {"sister","soeur"},
        {"food","aliments"},
        {"flower","fleur"},
        {"in","dans"},
};
  1. 替换断言方法,使用JUnit5专门用于数组内容比较的assertArrayEquals方法,该方法会递归比对多维数组的每个元素的内容:
// 替换原来的assertEquals
assertArrayEquals(corpusB, corpusA);

内容的提问来源于stack exchange,提问作者Loïc Rutabana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:09:01