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将很乐意重用值;另一种方法是抛出异常.
如果对于测试用例而言数字是唯一的很重要,我建议在测试用例本身中明确这一点.您可以组合Generator< T>与众不同:
var uniqueIntegers = new Generator<int>(new Fixture()).distinct().Take(10);
如果您使用的是AutoFixture.Xunit2,则可以请求生成器< T>通过测试方法参数:
[Theory,AutoData] public void MyTest(Generator<int> g,string foo) { var uniqueIntegers = g.distinct().Take(10); // more test code goes here... }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。