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

标签 java unit-testing junit equals

我在测试洗牌类(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/

相关文章:

JavaScript (node.js) : unit testing code that fires multiple events

c# - 如何在 .NET 中测试可执行文件

java - Assert.assertEquals(object 1, object2) 如何比较两个对象?

java - RocketMQ管理控制台

java - readObject() 在特定对象上阻塞

java - 线程在终止之前不会输出流

java - 从命令行 Linux 运行 Java 程序

unit-testing - HsqlDB : expected ; 上的触发语法

java - Sonar 不显示代码覆盖率

Java:无法在测试用例上实现 runnable:void run() 碰撞