我有一个方法以这种方式完成方法:
public int get(int i) throws ArrayIndexOutOfBoundsException {
if(i < numElements)
return elements[i];
else
throw new ArrayIndexOutOfBoundsException("");
}
现在我必须确保此方法有效。 我做了一个测试来测试长度为0的数组的get方法。 所以主要是我写道:
try {
IntSortedArray r3 = new IntSortedArray(0); //I create an array of length 0
if( **???** ) {
System.out.println("OK");
}
else {
System.out.println("FAIL");
}
} catch(Exception ecc) {
System.out.println(ecc + " FAIL");
}
我将if作为if的条件?感谢
IntSortedArray类:
private int[] elements;
private int numElements;
public IntSortedArray(int initialCapacity) {
elements = new int[initialCapacity];
numElements = 0;
System.out.println("Lunghezza dell'array: " + elements.length);
}
答案 0 :(得分:1)
你可以做到
try {
IntSortedArray r3 = new IntSortedArray(0);
r3.get(0);
fail();
} catch(ArrayIndexOutOfBoundsException expected) {
}
答案 1 :(得分:0)
好。所以你在这里测试了至少两件不同的东西:
由此,给定您的构造函数,您可以构造具有非负数的对象,以及负数。此外,您还可以检索数组边界中的非负元素,超出数组边界的非负元素以及数组的负元素(绝对超出边界)。
这里有大约五个测试用例。我将使用JUnit作为示例来测试您尝试从包装数组中提取元素的情况,并且它已超出范围。顺便通过,因为你只做了一半的检查;尝试索引到一个等于长度的数组位置也超出范围。
// Test will pass due to exception being thrown.
@Test(expected = ArrayIndexOutOfBoundsException.class)
public void getWithElementOutOfBounds() {
IntSortedArray r3 = new IntSortedArray(0);
rt.get(0);
}
使用expected
注释的@Test
部分,您可以期望抛出某些异常,而无需提供条件或try-catch块。