2012-02-11 57 views
2

我有一個方法,按升序對數組進行排序,我想測試這個方法。我創建了兩個單元測試,一個遍歷所有元素並聲明當前元素比下一個元素更少,另一個方法聲明已排序的數組與我創建的另一個排序數組具有相同的元素。單元測試 - 排序數組

是否有任何其他方式來測試這種方法或這兩個很好?

我使用Java

回答

3

我還要補充試驗,以覆蓋期望的行爲時:

  • 輸入數組爲空
  • 輸入數組爲空或具有單個元件

然而,除非你有一個很好的理由,你應該使用內置的Arrays.sort()而不是實現你自己的排序。

+0

但是,如果我給一個空數組,那麼如何測試排序方法呢? – FranXh 2012-02-11 22:10:25

+0

您的測試應檢查該方法是否引發合適的異常(例如IllegalArgumentException)或返回合適的值(例如null或空數組),以適合您的應用程序爲準。 – DNA 2012-02-11 22:17:58

2

如果通過「排序陣列具有相同的元件」意味着數組排序有出現的每個元素的一些數字,那麼這兩個測試是足夠的。 (如{ 1, 1, 2 }這樣的數組不應該是輸入{2, 1, 2}的有效結果。)表達它的另一種方式是結果應該是輸入的排列。

您可能感興趣或不感興趣的第三個要求是算法是否爲stable。在這種情況下,您應該添加一個測試,確保輸入中的任何兩個相等元素在輸出中具有相同的相對順序。

+0

好的,這是有意義的:d謝謝!!! – FranXh 2012-02-11 22:05:10

+0

對於第三個要求,我已經包含了這種方式: assertTrue(array [i] <= array [i + 1])。你是這個意思嗎? – FranXh 2012-02-11 22:09:10

+0

不,不是真的。但是,如果你的數組包含數字(或任何原始值),那麼穩定性要求不適用於你的情況。 – aioobe 2012-02-11 22:11:07

1
  1. 檢查空數組。
  2. 檢查與Integer.Max和Integer.Min作爲元素
  3. 檢查與Integer.Max + 1和Integer.Max-1
  4. 檢查與Integer.Min-1和Integer.Min + 1
  5. 重複元件
  6. 奇數和偶數的數組元素的
  7. 陣列具有不同的原始類型元素
  8. 檢查與所有負/所有正整數和混合陣列的兩個
  9. 校驗長度的返回
  10. 陣列僅具有1元件有序數組的
  11. 檢查順序(升序/降序)
  12. 全零
  13. 檢查與0在第一個或最後一個索引