2016-02-05 82 views
2

在我的代碼中,我有兩個靜態方法。我用來比較兩個int數組的內容,以及比較兩個字符串數組內容(以相同順序)的內容。我如何爲這些方法之一構造JUnit測試?我在想,我可以使用 編輯** 我創建了一個測試,但可行,但不準確。如何創建一個JUnit測試來測試CompareTo?

//edited test, passes but clearly isn't correct. 
    public class ArrayComparerTests { 
     @Test 
     public void testIntArray() { 
    //  ArrayComparer arrayComparer = new ArrayComparer(); 
      int[] list1 = {2,2,3}; 
      int[] list2 = {1}; 
      assertEquals(false, ArrayComparer.compareIntArrays(list1, list2)); 
     } 

    } 


    public class ArrayComparer { 
     public static boolean compareIntArrays(int[] list1, int[] list2) { 

      // checks for same array reference 
      if (list1 == list2) { 
       return true; 
      } 

      // checks for null arrays 
      if (list1 == null || list2 == null) { 
       return false; 
      } 

      // arrays should be of equal length 
      if (list2.length != list1.length) { 
       return false; 
      } 

      // compare array values 
      for (int i = 0; i < list1.length; i++) { 
       for (i = 0; i < list2.length; i++) { 
        if (list1[i] != list2[i]) 
         return false; 
       } 
      } 
      return true; 
     } 


     public static boolean compareStringArrays(String[] list3, String[] list4) { 
      // checks for same array reference 
      if (list3 == list4) { 
       return true; 
      } 

      // checks for null arrays 
      if (list3 == null || list4 == null) { 
       return false; 
      } 

      // arrays should be of equal length 
      if (list4.length != list3.length) { 
       return false; 
      } 

      // compare array values 
      for (int i = 0; i < list3.length; i++) { 
       for (i = 0; i < list4.length; i++) { 
        if (list3[i] != list4[i]) 
         return false; 
       } 
      } 
      return true; 
     } 
    } 
+0

可能你只是創建相互陣列中的每個元素進行比較,假設它們是相同的尺寸,只是打破了功能,如果有什麼心不是在相同的函數返回false,只是做一個斷言真(或取決於你期望得到什麼結果)作爲你的單元測試? – AngryDuck

回答

0

您或許可以使用Assert.assertArrayEquals

@Test 
public void testIntArray() { 
    int[] list1 = {2,2,3}; 
    int[] list2 = {1}; 
    // assertion fail 
    Assert.assertArrayEquals(list2, list1); 

    // assertion pass 
    int list3 = {2,2,3}; 
    Assert.assertArrayEquals(list1, list3); 
} 
0

想通了。這是答案。

public class ArrayComparerTests { 
    @Test 
    public void testIntArray() { 
     int[] list1 = {2,2,3}; 
     int[] list2 = {1}; 
     assertEquals(false, ArrayComparer.compareIntArrays(list1, list2)); 
    } 

}