2016-03-08 93 views
0

提供的測試isSorted()方法的JUnit測試用例有什麼問題?該方法簡單地檢查整數數組是否按升序排列。我正在嘗試徹底測試該方法,但不知道從哪裏開始。例如:檢查數組是否爲空或者只有一個元素。感謝任何幫助。爲isSorted()方法創建JUnit測試用例的最佳方式是什麼?

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

你爲什麼要實例化'CheckArray'?構造函數在哪裏?這是什麼'isIntArraySorted'方法?你爲什麼傳遞null? – shmosel

+0

對不起我的錯誤,將方法複製錯了。然而,我是一個初學者,有點迷路,但我試圖檢查一個空數組傳遞null。 – MercedezB

+0

Null!=空。而且你不應該從實例中調用靜態方法。什麼是陣列? – shmosel

回答

1

如果數組爲空或者有一個元素爲合理測試,則檢查結果。

同時檢查:

  • 2-元件陣列具有相等的元件具有不相等的元素
  • 2元件陣列在兩種順序
  • 3與在開始時最大元素元件陣列,中間和結束位置。

我不知道我會測試其他(也許空輸入的情況下)。最終你只需要測試就可以給你正確的信心;您可以添加更多的測試,而不會增加信心。另外,你可以圍繞你對這個方法如何工作的信念來構造你的測試,例如,

  • 如果我有一個該方法返回true的數組,那麼如果我在最後加入一個元素{小於,等於,大於}最後一個元素,它會返回什麼? (希望是false,false,true)
  • 如果我有一個這個方法返回false的數組,它會返回什麼,如果我添加一個元素{小於,等於,大於}最後一個元素? (希望在所有情況下都是錯誤的)
1

創建單元測試的最佳方法是在創建測試的實際方法之前。

你分析你的方法應該做什麼,以及它應該如何爲每一個可能的輸入功能。在哪些情況下它會返回true?對於哪個輸入它返回false?何時拋出異常? ...

然後你爲每種情況編寫單元測試。 一旦你這樣做了,你就寫出實際的方法,看看它是否符合你的單元測試。

編輯:也非常重要,實際存在的測試方法。您正在測試isIntArraySorted方法,但該方法不存在,您應該測試isSorted方法。

相關問題