如何创建JUnit测试来测试CompareTo?

时间:2016-02-05 15:29:18

标签: java arrays junit int compare

在我的代码中,我有两个静态方法。我用来比较两个int数组的内容,另一个是比较两个字符串数组的内容(以相同的顺序)。如何为其中一种方法构建JUnit测试?我在想我可以用 编辑** 我创建了一个无效的测试。

//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;
        }
    }

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

想出来。这就是答案。

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

}