提供的测试isSorted()
方法的JUnit测试用例有什么问题?该方法只是检查一个int数组是否按升序排列。我试图彻底测试该方法但不知道从哪里开始。例如:检查数组是否为空或者只有一个元素。感谢任何帮助。
public class CheckArray {
/**
* Returns true if the given array is sorted in ascending order.
*/
public static boolean isSorted(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]) {
return false;
}
}
return true;
}
}
public class CheckArrayTest {
@Test
public void isSorted() {
int[] array = { 2, 1 };
CheckArray haha = new CheckArray(array);
assertFalse(haha.isSorted(null));
}
答案 0 :(得分:1)
创建单元测试的最佳方法是在创建测试的实际方法之前。
您可以分析您的方法应该做什么,以及它应该如何对每个可能的输入起作用。在哪些情况下它返回真实?对于哪个输入它返回false?什么时候应该抛出异常? ...
你为每个案例写了一个单元测试。 一旦你这样做,你就编写实际的方法,看看它是否符合你的单元测试。
编辑:也非常重要,实际存在的测试方法。您正在测试isIntArraySorted
方法,但该方法不存在,您应该测试isSorted
方法。
答案 1 :(得分:1)
如果数组为空或有一个元素,则检查结果是合理的测试。
同时检查:
我不确定我会测试多少其他内容(可能是空输入案例)。最终你只需要测试就可以让你对它的正确性有合理的信心;您可以在不增加信心的情况下添加更多测试。
或者,您可以围绕您对该方法如何工作的看法来构建测试,例如