Модульное тестирование с функциями, которые возвращают случайные результаты - PullRequest
67 голосов
/ 23 ноября 2008

Не думаю, что это специфично для языка или фреймворка, но я использую xUnit.net и C #.

У меня есть функция, которая возвращает случайную дату в определенном диапазоне. Я передаю дату, и дата возвращения всегда находится в диапазоне от 1 до 40 лет до указанной даты.

Теперь мне просто интересно, есть ли хороший способ для юнит-тестирования этого. Наилучшим подходом, по-видимому, является создание цикла и запуск функции, т. Е. 100 раз, и утверждение, что каждый из этих 100 результатов находится в желаемом диапазоне, что является моим текущим подходом.

Я также понимаю, что если я не смогу управлять своим генератором случайных чисел, не будет идеального решения (в конце концов, результат является случайным), но мне интересно, какие подходы вы используете, когда вам нужно протестировать функциональность, которая возвращает случайный результат в определенном диапазоне?

Ответы [ 11 ]

0 голосов
/ 11 мая 2011

Я не думаю, что юнит-тестирование предназначено для этого. Вы можете использовать модульное тестирование для функций, которые возвращают стохастическое значение, но используют фиксированное начальное число, и в этом случае они не являются стохастическими, так сказать, для случайного начального числа я не думаю, что модульное тестирование - это то, что вам нужно, например, для ГСЧ вы имеете в виду системный тест, в котором вы много раз запускаете ГСЧ и смотрите его распределение или моменты.

...