У меня есть класс генерации псевдослучайных чисел (PRNG), который я хочу unit test. Существует два подхода:
- напишите тестовый пример, который принимает большое количество образцов и проверяет, правильно ли они распределены. Такой подход может привести к довольно длительному времени выполнения для тестового примера;
- вычислить небольшую серию образцов "вручную" и проверить, воспроизводит ли алгоритм PRNG. Такой подход может привести к созданию не случайной последовательности, не будучи замеченной;
Я бы сказал, что первый подход не является модульным тестированием, потому что он не выполняет тест белого ящика генератора, но, с другой стороны, он правильно проверяет ответственность класса. Второй подход больше похож на реальный unit test, сфокусированный на алгоритме, но он не дает столько доказательств, что класс выполняет свою ответственность.
Какой подход вы предпочитаете и почему?