2015-05-06 4 views
6

Есть ли способ в AutoFixture, так что fixture.Create<string>() даст тот же результат? I.e., можно ли инициализировать прибор с помощью семени?Могу ли я повторно генерировать случайные значения в AutoFixture, используя семя?

Update

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

+1

В AutoFixture нет такой функции, так как она не использует глобальный объект «Случайный» для генерации значений. За все годы, которые я использовал, я никогда не нуждался в такой функции. Если тест терпит неудачу, вы можете записать их таким образом, чтобы в отчете о тестировании всегда указывалось, какие значения были использованы. Например, если вы используете * AutoFixture.Xunit *, это происходит автоматически. –

+0

BTW, я действительно понимаю, что у FsCheck * есть такая функция, но я не использую ее там ... –

+3

Списание всех тестовых данных, которые принимали участие в определенном тесте, не очень сильно масштабируется. Предполагая, что их много, вы получите огромный список. Кроме того, в случае неудачного теста вам придется адаптировать все тестовые данные в тесте к печатным значениям. Еще более громоздкой является то, что вам придется писать собственный код во всех тестах, если тестовые данные не содержатся в некоторых полях экземпляров. Я действительно думаю, что печатное семя - это путь сюда. – Matthias

ответ

4

Вы смотрите на функции под названием freezing:

var alwaysTheSameString = fixture.Freeze<string>(); 

Если вы хотите, вы можете также заморозить string на основе семян значения твои:

var alwaysTheSameFooString = fixture.Freeze<string>("foo"); 

Keep в помните, что AutoFixture использует только предоставленное значение значение при запросе на создание строк. Если вы хотите использовать начальное значение для любого другого типа, вам нужно будет customize it yourself.

+0

Меня больше интересует то, что по типу. Я уточню свой вопрос, чтобы сделать это более ясным. – Matthias

 Смежные вопросы

  • Нет связанных вопросов^_^