Метод тасования целых чисел - PullRequest
1 голос
/ 10 марта 2012

У меня есть метод, который называется shuffle, как тот, который я показал ниже, который перемешивает ArrayList целых чисел.Мне было интересно, я должен проверить этот метод?

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

Я использую этот метод, чтобы перетасовать колоду из 52 карт, и в этом случае это становится труднее увидеть (проверяя, перемешаны ли карты или нет, потому что выможет иметь две карты подряд с одинаковым номером или одинаковой мастью, которые по-прежнему считаются перемешанными.

1 Ответ

3 голосов
/ 10 марта 2012

Там - это - все еще точка в тестировании тривиальных процедур.Вы можете проверить, что

  • он делегирует Collections.shuffle, если это требование подпрограммы
  • , это фактически перетасовывает

, что даст вам знать, чтопроцедура все еще поддерживает свой контракт, если вы захотите refactor позже.

Вам нужно , чтобы проверить это?Нет. Это прагматично для проверки?Возможно нет.Но каждая гарантия помогает проверить правильность вашей программы.В конечном счете, решать вам.


РЕДАКТИРОВАТЬ Рекомендуется разрабатывать для тестирования.По сути, проще протестировать подпрограмму, которая не имеет побочных эффектов , т. Е.

подпрограмма, которая воздействует на свои входы, вычисляет значение и возвращает результат.

Теперь, когда Collections.shuffle изменяет существующий список, возвращаемое значение может показаться неоднозначным.Давайте рассмотрим второй лучший вариант для тестируемости

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

Является ли такой дизайн подходящим или нет в вашем деле, которое я оставляю вам на суд.Это было просто общее к сведению:)

...