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

标签 c# autofixture

根据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/

相关文章:

javascript - 在 Web 方法中获取 JSON 数组中的数组?如何?

c# - 如何将后期构建处理程序添加到 AutoFixture

autofixture:删除自定义

c# - 通知 WPF DataGrid 更改

javascript - 为什么我的 JavaScript 函数只能在索引 View 中工作?

c# - 正则表达式适用于 .NET 测试站点,但不适用于 C# 环境

c# - Xamarin Forms DependencyService nullReferenceException

c# - 覆盖 Autofixture 自定义设置

c# - Autofixture.Automoq - 泛型使 bool 始终为真

.net - 是否可以使用 AutoFixture CreateMany 创建交替的 bool 值?