创建自动生成的整数不起作用
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 上添加了一个问题:
在 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
根据 autofixture cheatsheet,我应该能够以连续的方式自动生成数字(1、2、3 等)。
我正在使用最新版本 (3.34.0) 并使用与作弊 sheet 显示完全相同的代码,并且不断获得随机数,而不是 1、2、3 等等。我错过了什么吗?作弊 sheet 过时了吗?
我的代码:
var fixture = new Fixture();
int i = fixture.Create<int>();
编辑:
谢谢 Thomas - 我在 github 上添加了一个问题:
在 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