Mar*_*ras 2 java junit unit-testing equals
我正在测试我的洗牌课,遇到了一个我无法理解的问题.为什么以下assert声明:
assertEquals(new int[]{1}, new int[]{1});
Run Code Online (Sandbox Code Playgroud)
结果是AssertionError?当然,正确的答案是"因为他们不平等!",但有人能解释我为什么吗?以及如何测试一个方法,我希望两个这样的对象相等?
但有人可以解释我为什么
当然 - 数组不会覆盖equals,因此它们继承了行为Object,其中任何两个不同的对象都是不相等的.
如果你使用0元素数组,它甚至比你展示的版本更简单:
System.out.println(new int[0].equals(new int[0])); // false
Run Code Online (Sandbox Code Playgroud)
这就是为什么在检查您使用的非测试代码Arrays.equals中的相等性时,以及在检查测试代码中的相等性时,您使用专用assertXyz方法(其中确切的方法取决于JUnit的版本等).
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |