gpt4 book ai didi

c# - 使用 AutoFixture 3 生成的整数是否唯一?

转载 作者:可可西里 更新时间:2023-11-01 08:58:04 26 4
gpt4 key购买 nike

是用IFixture.Create<int>()生成的整数吗?独一无二?

The Wiki says数字是随机的,但它也告诉我们这一点

The first numbers are generated within the range of [1, 255], as this is a set of values that are valid for all numeric data types. The smallest numeric data type in .NET is System.Byte, which fits in this range.

When the first 255 integers have been used, numbers are subsequently picked from the range [256, 32767], which corresponds to the remaining positive numbers available for System.Int16.

GitHub 上的两件事:

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

https://github.com/AutoFixture/AutoFixture/pull/7

那些单元测试呢?

https://github.com/AutoFixture/AutoFixture/blob/master/Src/AutoFixtureUnitTest/GeneratorTest.cs#L33

[Theory, ClassData(typeof(CountTestCases))]
public void StronglyTypedEnumerationYieldsUniqueValues(int count)
{
// Fixture setup
var sut = new Generator<T>(new Fixture());
// Exercise system
var actual = sut.Take(count);
// Verify outcome
Assert.Equal(count, actual.Distinct().Count());
// Teardown
}

https://github.com/AutoFixture/AutoFixture/blob/master/Src/AutoFixtureUnitTest/GeneratorTest.cs#L57

[Theory, ClassData(typeof(CountTestCases))]
public void WeaklyTypedEnumerationYieldsUniqueValues(int count)
{
// Fixture setup
IEnumerable sut = new Generator<T>(new Fixture());
// Exercise system
var actual = sut.OfType<T>().Take(count);
// Verify outcome
Assert.Equal(count, actual.Distinct().Count());
// Teardown
}

我没有找到说生成的数字是唯一的声明,只有那些暗示它的信息,但我可能是错的。

最佳答案

目前,AutoFixture 努力创建唯一编号,但并不能保证。例如,您可以用尽范围,这最有可能发生在 byte 上。值。例如,如果您请求 300 byte值,您得到重复项,因为只有 256 个值可供选择。

一旦初始集用完,AutoFixture 将愉快地重用这些值;另一种方法是抛出异常。

如果数字的唯一性对于测试用例很重要,我会建议在测试用例本身中使其明确。你可以结合Generator<T>Distinct为此:

var uniqueIntegers = new Generator<int>(new Fixture()).Distinct().Take(10);

如果您使用 AutoFixture.Xunit2 , 您可以申请 Generator<T>通过测试方法参数:

[Theory, AutoData]
public void MyTest(Generator<int> g, string foo)
{
var uniqueIntegers = g.Distinct().Take(10);
// more test code goes here...
}

关于c# - 使用 AutoFixture 3 生成的整数是否唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172186/

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