2012-02-11 60 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在第一个或最后一个索引