Скажем, у меня есть следующий тест:
[Test]
public void MyTest( [RandomNumbers( Count=100, Minimum=0, Maximum=1000 )] int number )
{
...
}
И в какой-то момент, во время моего обычного процесса сборки, он не прошел.Я получил уведомление по электронной почте и отправился на расследование.
Теперь, когда я открываю тест в Visual Studio и нажимаю «Выполнить тесты», он проходит.Я делаю это снова, и это снова проходит.И опять.И опять.Очевидно, что ошибка была связана с этой конкретной последовательностью случайных чисел.
Итак, вопрос: Как мне повторно запустить этот тест с этой точной последовательностью?
(при условии, что яиметь полный отчет Gallio)
ОБНОВЛЕНИЕ :
(после комментария о том, что это плохая идея)
Первый , я на самом деле не спрашиваю, хорошая ли это идея.Вопрос в другом.
Секунда , когда тестируемая система достаточно сложна, а пространство входных данных имеет несколько независимых измерений, поэтому правильное разбиение этого пространства на области эквивалентности представляет значительную проблему.и в умственных усилиях, и во времени, что просто не стоит, при условии, что меньшие компоненты системы уже были испытаны самостоятельно.В то же время, если я могу просто подсунуть систему туда-сюда, почему бы не сделать это?
Третий , я на самом деле не новичок в этой области.Я всегда использовал эту технику с другими тестовыми средами (такими как csUnit и NUnit), и она оказалась очень успешной в обнаружении незначительных ошибок.В то время не было таких понятий, как генерируемые данные, поэтому мы использовали наши собственные костыли в форме System.Random
с заранее определенным начальным числом.Это семя было сгенерировано как часть инициализации прибора (обычно на основе текущего времени) и тщательно записано в журнал.Таким образом, когда тест не удался, я мог взять начальное значение из журнала, подключить его к тестовому устройству и получить точно такой же набор тестовых данных и, таким образом, точно такой же отказ отладки.
И четвертый , если это такая плохая идея, почему фабрика RandomNumbers
вообще существует?