gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:52:04 25 4
gpt4 key购买 nike

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

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

我的代码:

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

关于c# - 创建自动生成的整数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32594851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com