我有一个名为shuffle
的方法,就像我在下面显示的方法一样,它会对一个整数的ArrayList进行混洗。我想知道,我必须测试这种方法吗?
public void shuffle(){
Collections.shuffle(numbers);
}
我正在使用这种方法来洗牌一副52张牌,在这种情况下,它更难看(通过测试卡是否被洗牌,因为你可能连续两张牌相同数量或相同的套装,仍然被认为是洗牌。
答案 0 :(得分:3)
仍然是测试琐碎程序的重点。你可以测试那个
Collections.shuffle
如果您希望以后再refactor
,那将让您知道该例程仍然维持其合同。
你需要进行测试吗?不,是否实用进行测试?也许不是。但是每一点保证都有助于验证程序的正确性。最终,由你来决定。
修改强> 设计测试是一种很好的做法。基本上,测试没有副作用的例程更容易,即
作用于其输入的例程,计算值并返回结果。
现在,由于Collections.shuffle
修改了现有列表,因此返回值似乎不明确。让我们考虑可测试性的第二个最佳选择
public void shuffle(List<?> l) {
Collections.shuffle(l);
}
在你的案件中,这种设计是否合适我留给你判断。这只是一个普遍的假设:)