В настоящий момент я работаю над небольшим проектом для себя, и я использую его как возможность познакомиться с модульным тестированием и поддерживать надлежащую документацию.
У меня есть класс Deck
, представляющий колоду карт (это очень просто и, честно говоря, я могу быть уверен, что он работает без unit test, но, как я уже сказал, я привык к использованию модульные тесты) и имеет метод shuffle()
, который изменяет порядок карт в колоде.
Реализация очень проста и, безусловно, будет работать:
public void shuffle()
{
Collections.shuffle(this.cards);
}
Но как я мог реализовать unit test для этого метода. Моя первая мысль состояла в том, чтобы проверить, отлична ли верхняя карта колоды после вызова shuffle()
, но, конечно, есть вероятность, что она будет такой же. Моя вторая мысль состояла в том, чтобы проверить, изменился ли весь порядок карточек, но опять же они могут быть в том же порядке. Итак, как я могу написать тест, который гарантирует, что этот метод работает во всех случаях? И вообще, как вы можете unit test методы, для которых результат зависит от некоторой случайности?
Приветствия,
Пит