JUnit与预期的布尔数组不起作用

时间:2017-11-23 09:21:47

标签: arrays junit boolean

我写了一个方法,我必须输入两个int数组和一个int值。该方法通过两个数组并将每个索引除以int值。如果两个第一个索引都可以通过值进行控制,它会将true和false值存储在第三个(新)布尔数组中。

public class PIArraysTest {

@Test
public void testPairwiseContainsDividableBy()
{
    PIArrays pIArrays1 = new PIArrays();
    assertEquals(new boolean[] {true,false,false}, 
       pIArrays1.pairwiseContainsDividableBy(new int[] {4,8,12},new int[] 
       {24,19,18}, 4));


   }
}

如果a = {4,8,12},b = {24,19,18}且divisor = 4,则结果变为{true,false,false}。一切正常。我的测试方法再次出现问题:

expected:<[Z@1bf585b> but was:<[Z@f2c2ba>
---
java.lang.AssertionError: expected:<[Z@1bf585b> but was:<[Z@f2c2ba>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:144)
at PIArraysTest.testPairwiseContainsDividableBy(PIArraysTest.java:76)

编译再次正常工作。但是,如果运行测试,我会收到此错误:

assertEquals(new boolean[] {true,false,false}, 
    pIArrays1.pairwiseContainsDividableBy(new int[] {4,8,12},new int[] 
    {24,19,18}, 4));

它将我重定向到此行作为错误的来源:

@Test
public void testPairwiseContainsDividableBy()
{
   PIArrays pIArrays1 = new PIArrays();
   boolean[] test1 = pIArrays1.pairwiseContainsDividableBy(new int[]{4,8,12},new int[] {24,19,18}, 4);
   boolean[] result = {true, false, false};
   assertArrayEquals(result, test1);

编辑:

所以我试了一下,想出了这个:

{{1}}

}

这导致编译器错误:不适合assertArrayEquals方法

1 个答案:

答案 0 :(得分:0)

assertEquals(Object[], Object[])不会按项目比较数组。因此,不推荐使用它,您应该使用assertArrayEquals(boolean[], boolean[])

您至少需要JUnit 4.12。 (见https://github.com/junit-team/junit4/commit/26d34db6c2c12b0fee9ae3d307b3f18fe0ee62da#diff-73eb269f6f932a6bd4cc17c2cfd54571