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