【发布时间】:2017-11-23 09:21:47
【问题描述】:
我写了一个方法,我必须输入两个 int 数组和一个 int 值。该方法通过两个数组并将每个索引除以 int 值。如果两个第一个索引都可以被值分割,它将 true 和 false 值存储在第三个(新)布尔数组中。
public class PIArrays {
public boolean[] pairwiseContainsDividableBy(final int[] a, final int[] b,
final int divisor) {
boolean[] result = new boolean [a.length];
for(int i = 0; i < a.length; i++){
if(a[i]%divisor == 0 && b[i]%divisor == 0){
result[i] = true;
}else{
result[i] = false;
}
}
return result; }
}
如果 a = {4,8,12}, b = {24,19,18} 并且除数 = 4,则结果变为 {true, false, 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));
}
}
编译再次正常工作。但是,如果运行测试,我会收到此错误:
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);
}
这会导致编译器错误:不适合 assertArrayEquals 方法
【问题讨论】: