洗牌整数测试的方法

时间:2012-03-10 16:09:44

标签: java collections arraylist shuffle

我有一个名为shuffle的方法,就像我在下面显示的方法一样,它会对一个整数的ArrayList进行混洗。我想知道,我必须测试这种方法吗?

  public void shuffle(){
    Collections.shuffle(numbers);
  }

我正在使用这种方法来洗牌一副52张牌,在这种情况下,它更难看(通过测试卡是否被洗牌,因为你可能连续两张牌相同数量或相同的套装,仍然被认为是洗牌。

1 个答案:

答案 0 :(得分:3)

仍然是测试琐碎程序的重点。你可以测试那个

  • 如果这是例行程序的要求,它会委托给Collections.shuffle
  • 它实际上是洗牌

如果您希望以后再refactor,那将让您知道该例程仍然维持其合同。

需要进行测试吗?不,是否实用进行测试?也许不是。但是每一点保证都有助于验证程序的正确性。最终,由你来决定。


修改 设计测试是一种很好的做法。基本上,测试没有副作用的例程更容易,即

  

作用于其输入的例程,计算值并返回结果。

现在,由于Collections.shuffle修改了现有列表,因此返回值似乎不明确。让我们考虑可测试性的第二个最佳选择

public void shuffle(List<?> l) {
    Collections.shuffle(l);
}

你的案件中,这种设计是否合适我留给你判断。这只是一个普遍的假设:)