3
我有一個使用JUnit測試的mergesort函數。下面是我的測試案例之一:JUnit聲明數組不等於
@Test
//test using randomly generated numbers
public void MergeSortTest002()
{
long seed = System.currentTimeMillis();
Random rng = new Random(seed);
Integer[] TestArray = new Integer[1000];
int MAX_VALUE = Integer.MAX_VALUE;
for(int i=0; i<1000; i++) {
//this will generate positive and negative numbers from
// -MAX_VALUE/2 to +MAX_VALUE/2
Integer newNum = rng.nextInt(MAX_VALUE/2) - MAX_VALUE;
TestArray[i] = newNum;
}
Integer[] correctArray = TestArray;
Arrays.sort(correctArray);
MergeSort.mergeSort(TestArray);
Assert.assertArrayEquals(correctArray,TestArray);
}
奇怪的是,即使我註釋掉,我打電話給我的mergeSort
功能線,測試仍然通過。
我想通一兩件事情正在發生:要麼assertArrayEquals
不關心的元素(不太可能),當我複製TestArray
至correctArray
的順序,這是複製的參考,從而對correctArray
調用Arrays.sort
是排序還有TestArray
。
任何人都可以確認兩者中哪一個正在發生,應該是什麼解決方案?有沒有Assert
記住順序,或者有沒有一種方法可以通過值而不是引用來複制數組,而無需編寫明確的for循環?
啊,謝謝。我認爲這是問題,但不知道'.clone()'的存在。 – xbonez