Java 动态数组pop方法正在工作,但JUnit中出现错误
我正在用java实现一个动态数组。我的pop方法应该将数组复制到一个新数组中,少一项。该方法可以工作,但是在使用assert进行测试时,我收到了一个错误 这是pop方法:Java 动态数组pop方法正在工作,但JUnit中出现错误,java,junit,dynamic-arrays,Java,Junit,Dynamic Arrays,我正在用java实现一个动态数组。我的pop方法应该将数组复制到一个新数组中,少一项。该方法可以工作,但是在使用assert进行测试时,我收到了一个错误 这是pop方法: public int pop() { data = Arrays.copyOf(data, data.length-1); return data.length; } 这是JUnit测试: @Test public void testLargePop() { DynamicArray a = new DynamicA
public int pop() {
data = Arrays.copyOf(data, data.length-1);
return data.length;
}
这是JUnit测试:
@Test
public void testLargePop() {
DynamicArray a = new DynamicArray(10);
for (int i = 1; i <= 100; i++) {
a.push(i);
}
for (int i = 100; i >= 1; i--) {
assertEquals(i, a.length());
assertEquals(i, a.pop());
assertEquals("pop should reduce the length of a dynamic array by 1", i-1, a.length());
}
}
失败是说预期100,但是99,然而流行音乐应该减少长度为99。这意味着pop方法正在发挥作用。所以我不明白为什么我仍然收到错误 断言
assertEquals(i, a.pop())
assertEquals(i - 1, a.pop())
从不为true
,因为a.pop()
会将数组大小减小一。因此,断言
assertEquals(i, a.pop())
assertEquals(i - 1, a.pop())
在第一个循环中,迭代器i等于100。这使得初始100项在第一个断言中匹配。下一个断言仍然将迭代器值100与现在更短的数组的长度进行比较。100 != 99