2016-02-05 64 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)); 
    } 

}