junit数组不等于测试

Sam*_*Sam 35 java arrays junit

我正在尝试编写一个测试用例,其中我的场景是两个字节数组应该 不相等.

我可以用junit做这个吗?

或者我必须使用像Hamcrest这样的外部东西?我无法更改此答案中的代码来完成工作

请举例.

Sea*_*oyd 47

我更喜欢这样做Hamcrest方式,它更具表现力:

Assert.assertThat(array1, IsNot.not(IsEqual.equalTo(array2)));
Run Code Online (Sandbox Code Playgroud)

或者带静态导入的简短版本:

assertThat(array1, not(equalTo(array2)));
Run Code Online (Sandbox Code Playgroud)

(IsEqual幸运的是,匹配器非常聪明,可以理解数组.)

请注意,Hamcrest的受限版本是JUnit 4.x发行版的一部分,因此您无需添加外部库.

  • 你的意思是 Arrays.equals() 吗? (2认同)

Pet*_*rey 43

您可以使用

assertFalse(Arrays.equals(array1, array2));
Run Code Online (Sandbox Code Playgroud)

如果你想检查它们是否相等,我会使用以下代码.

assertEquals(Arrays.toString(array1), Arrays.toString(array2));
Run Code Online (Sandbox Code Playgroud)

因为这会产生可读的输出,而不仅仅是失败.


pho*_*ser 13

较新版本的JUnit提供org.junit.Assert.assertArrayEquals(byte[], byte[]),其他数组类型的重载.失败显示第一个具有不匹配的索引以及该索引处的不同元素.

我也很享受assertEquals(Arrays.asList(expected), Arrays.asList(actual)).上面提到的Hamcrest动力演绎可能是最好的.