gpt4 book ai didi

java - 为什么 assertEquals(new int[]{1}, new int[]{1}) 会导致失败?

转载 作者:行者123 更新时间:2023-12-02 06:35:00 24 4
gpt4 key购买 nike

我在测试洗牌类(class)时遇到了一个我无法理解的问题。为什么以下 assert 语句:

assertEquals(new int[]{1}, new int[]{1}); 

导致 AssertionError?自然,正确答案是“因为它们不相等!”,但有人能解释一下为什么吗?以及如何测试我希望两个这样的对象相等的方法?

最佳答案

but could someone explain me why

当然 - 数组不会覆盖等于,因此它们从 Object 继承行为,其中任何两个不同的对象都是不相等的。

如果您使用 0 元素数组,它甚至比您显示的版本更简单:

System.out.println(new int[0].equals(new int[0])); // false

这就是为什么在非测试代码中检查相等性时使用 Arrays.equals,而在测试代码中检查相等性时使用专用的 assertXyz 方法(其中确切的方法取决于 JUnit 等的版本)。

关于java - 为什么 assertEquals(new int[]{1}, new int[]{1}) 会导致失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com