这个Junit测试是否有效?

时间:2018-04-30 02:11:55

标签: java junit

任务是将数组中的元素从一个等于或大于int i的索引开始,向右一步。对不起,通常这很容易谷歌,但我有一个Junit测试,我需要满足。

它应该符合JUnittest的要求:

@Test
public void testShiftElements() {
    String[] a = { "a", "b", "c", "d", "e" };
    String[] b = a.clone();
    int i = 1;
    Arrays.shiftElements(a, i);
    for (int j = 0; j < i; j++) {
        assertEquals(b[j], a[j]);
    }
    for (int j = i; j < a.length - 1; j++) {
        assertEquals(b[j], a[j + 1]);
    }
}

JUnistest是否正常工作,因为测试似乎要求例如 &#34;&#34;应该等于&#34; b&#34;,&#34; b&#34;应该等于&#34; c&#34; 。这是不可能的。 这是我的代码,它会改变。

public static String[] shiftElements(String a[], int i) {

    String[] b = new String[a.length + i];

    for (int j = 0; j < a.length; j++) {
        b[j] = a[j];
    }

    for (int d = i; d < b.length - 1; d++) {
        for (int c = i; c < b.length - 1; c++) {
            String temp = b[c + 1];
            b[c + 1] = b[c];
            b[c] = temp;
        }
    }
    return b;
}

1 个答案:

答案 0 :(得分:0)

测试是正确的,必须这样做。只是没有回报,但有无效。

public static void shiftElements(String[] a, int i) {
    for (int j = a.length -1; j > i; j--) {
        if (j >= i) {
            a[j] = a[j - i];
        }

    }

}

或者像这样,如果我不想删除最后一个字符串。

public static void shiftElements(String a[], int i) {
    for (int d = i; d < a.length - 1; d++) {
        for (int c = i; c < a.length - 1; c++) {
            String temp = a[c + 1];
            a[c + 1] = a[c];
            a[c] = temp;
        }
    }
}