Создание автоматически сгенерированных целых чисел не работает
В соответствии с таблицей автокреплений, я должен быть в состоянии автоматически генерировать числа (1, 2, 3 и т. Д.).
Я использую последнюю версию (3.34.0) и использую тот же код, что и в шпаргалке, и постоянно получаю случайные числа, а не 1, 2, 3 и так далее. Я что-то пропустил? Шпаргалка устарела?
Мой код:
var fixture = new Fixture();
int i = fixture.Create<int>();
Редактировать:
Спасибо Томас - я добавил проблему на github:
1 ответ
Решение
В AutoFixture 3 числа создаются с использованием случайного алгоритма. Тем не менее, поведение 2.x можно повторно применить, настроив Fixture
экземпляр с NumericSequenceCustomization
:
var fixture = new Fixture();
fixture.Customize(
new NumericSequenceCustomization());
var i1 = fixture.Create<int>();
var i2 = fixture.Create<int>();
var i3 = fixture.Create<int>();
// Prints -> 1
// Prints -> 2
// Prints -> 3
var l1 = fixture.Create<long>();
var l2 = fixture.Create<long>();
var l3 = fixture.Create<long>();
// Prints -> 4
// Prints -> 5
// Prints -> 6
var f1 = fixture.Create<float>();
var f2 = fixture.Create<float>();
var f3 = fixture.Create<float>();
// Prints -> 7
// Prints -> 8
// Prints -> 9
куда NumericSequenceCustomization
определяется как:
internal class NumericSequenceCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Customizations.Add(new NumericSequenceGenerator());
}
}
Чтобы создать числа, уникальные для каждого типа, используйте NumericSequencePerTypeCustomization
вместо:
var fixture = new Fixture();
fixture.Customize(
new NumericSequencePerTypeCustomization());
var i1 = fixture.Create<int>();
var i2 = fixture.Create<int>();
var i3 = fixture.Create<int>();
// Prints -> 1
// Prints -> 2
// Prints -> 3
var l1 = fixture.Create<long>();
var l2 = fixture.Create<long>();
var l3 = fixture.Create<long>();
// Prints -> 1
// Prints -> 2
// Prints -> 3
var f1 = fixture.Create<float>();
var f2 = fixture.Create<float>();
var f3 = fixture.Create<float>();
// Prints -> 1
// Prints -> 2
// Prints -> 3