Java 为isSorted()方法创建JUnit测试用例的最佳方法是什么?

Java 为isSorted()方法创建JUnit测试用例的最佳方法是什么?,java,arrays,sorting,junit,junit4,Java,Arrays,Sorting,Junit,Junit4,提供的JUnit测试用例测试isSorted()方法有什么问题?该方法只是检查int数组是否按升序排列。我正试图彻底测试这个方法,但不确定从哪里开始。例如:检查数组是空的还是只有一个元素。谢谢你的帮助 public class CheckArray { /** * Returns true if the given array is sorted in ascending order. */ public static boolean isSorted(in

提供的JUnit测试用例测试
isSorted()
方法有什么问题?该方法只是检查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));
    }
公共类CheckArray{
/**
*如果给定数组按升序排序,则返回true。
*/
公共静态布尔isSorted(int[]a){
对于(int i=0;ia[i+1]){
返回false;
}
}
返回true;
}
}
公共类CheckArrayTest{
@试验
公共空间被分类(){
int[]数组={2,1};
CheckArray haha=新的CheckArray(数组);
assertFalse(haha.isSorted(null));
}

创建单元测试的最佳方法是在创建实际测试方法之前

你分析你的方法应该做什么,以及它应该如何为每个可能的输入工作。在什么情况下它会返回true?对于哪个输入它会返回false?什么时候应该抛出异常

然后为每种情况编写一个单元测试。 一旦您这样做了,您就可以编写实际的方法,并查看它是否在单元测试中起作用


编辑:同样重要的是,实际存在的测试方法。您正在测试
isIntArraySorted
方法,但该方法不存在,您应该测试
isSorted
方法。

创建单元测试的最佳方法是在创建您测试的实际方法之前

你分析你的方法应该做什么,以及它应该如何为每个可能的输入工作。在什么情况下它会返回true?对于哪个输入它会返回false?什么时候应该抛出异常

然后为每种情况编写一个单元测试。 一旦您这样做了,您就可以编写实际的方法,并查看它是否在单元测试中起作用


编辑:同样重要的是,测试实际存在的方法。您正在测试
isIntArraySorted
方法,但该方法不存在,您应该测试
isSorted
方法。

检查数组是否为空或是否有一个元素是合理的测试

同时检查:

  • 具有相等元素的2元素数组
  • 两个顺序中元素不相等的2个元素数组
  • 3个元素阵列,最大元素位于开始、中间和结束位置
我不确定我会测试更多其他的测试(可能是空输入情况)。最终,您只需要测试就可以对其正确性给予合理的信心;您可以添加更多的测试,而无需增加信心

或者,您可以围绕您对该方法如何工作的信念来组织测试,例如:

  • 如果我有一个数组,这个方法返回true,那么如果我在末尾添加一个元素{小于,等于,大于}最后一个元素,它会返回什么?(希望是false,false,true)
  • 如果我有一个数组,该方法返回false,那么如果我在末尾添加一个元素{小于,等于,大于}最后一个元素,它会返回什么?(希望在所有情况下都是false)

检查数组是否为空或是否有一个元素是合理的测试

同时检查:

  • 具有相等元素的2元素数组
  • 两个顺序中元素不相等的2个元素数组
  • 3个元素阵列,最大元素位于开始、中间和结束位置
我不确定我会测试更多其他的测试(可能是空输入情况)。最终,您只需要测试就可以对其正确性给予合理的信心;您可以添加更多的测试,而无需增加信心

或者,您可以围绕您对该方法如何工作的信念来组织测试,例如:

  • 如果我有一个数组,这个方法返回true,那么如果我在末尾添加一个元素{小于,等于,大于}最后一个元素,它会返回什么?(希望是false,false,true)
  • 如果我有一个数组,该方法返回false,那么如果我在末尾添加一个元素{小于,等于,大于}最后一个元素,它会返回什么?(希望在所有情况下都是false)

为什么要实例化
CheckArray
?构造函数在哪里?这个
isIntArraySorted
方法是什么?为什么要传递null?对不起,我的错误,复制了错误的方法。但是,我是一个初学者,有点迷茫,但我传递null是为了检查空数组。null!=empty。你不应该被调用从实例中调用静态方法。而
array
的作用是什么?
array
是创建一个int数组来测试
isSorted
方法,但是你传递的是null,而不是
array
。你还没有发布任何实际使用
array
的代码。你为什么要实例化
CheckArray
?c在哪里onstructor?这是什么
isIntArraySorted
方法?为什么要传递null?对不起,我的错误,复制了错误的方法。然而,我是初学者,有点迷路,但我传递null是为了检查空数组。null!=空。你不应该从实例调用静态方法。那么
array
f是什么或者?
array
是创建一个int数组来测试
isSorted
方法,但是您传递的是null,而不是
array
。您没有发布任何实际使用
array
的代码。