创建自动生成的整数不起作用

Creating autogenerated integers not working

根据 autofixture cheatsheet,我应该能够以连续的方式自动生成数字(1、2、3 等)。

我正在使用最新版本 (3.34.0) 并使用与作弊 sheet 显示完全相同的代码,并且不断获得随机数,而不是 1、2、3 等等。我错过了什么吗?作弊 sheet 过时了吗?

我的代码:

var fixture = new Fixture();
int i = fixture.Create<int>();

编辑:

谢谢 Thomas - 我在 github 上添加了一个问题:

https://github.com/AutoFixture/AutoFixture/issues/440

在 AutoFixture 3 中,numbers are created using a random algorithm。但是,可以通过使用 NumericSequenceCustomization:

自定义 Fixture 实例来重新应用 2.x 行为
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