Asp.net core AutoFixture有时无法为标记为RangeAttribute的特性生成值

Asp.net core AutoFixture有时无法为标记为RangeAttribute的特性生成值,asp.net-core,autofixture,nsubstitute,Asp.net Core,Autofixture,Nsubstitute,目前我的测试代码中有一个非常奇怪的行为。。。这一切都是从使用RangeAttribute装饰字符串属性开始的。我正在ASP.NET核心中使用验证器类进行单元测试模型验证,因此在下面的示例中MyClass是一个请求对象 据我所知,AutoFixture将考虑属性标记的属性。这是(伪)代码的样子: private void RunTest() { var sut = Fixture.Freeze<MyClass>(); su

目前我的测试代码中有一个非常奇怪的行为。。。这一切都是从使用
RangeAttribute
装饰字符串属性开始的。我正在ASP.NET核心中使用
验证器
类进行单元测试模型验证,因此在下面的示例中
MyClass
是一个请求对象

据我所知,AutoFixture将考虑属性标记的属性。这是(伪)代码的样子:

private void RunTest()
        {
            var sut = Fixture.Freeze<MyClass>();
            sut.MyPropery = "12345";
            // all tests from here on fails randomly
        }

        private class MyClass
        {
            [Required]
            [Range(10000, 99999)]
            public string MyPropery { get; set; }
        }
private void RunTest()
{
var sut=Fixture.Freeze();
sut.MyPropery=“12345”;
//从此以后的所有测试都会随机失败
}
私有类MyClass
{
[必需]
[范围(1000099999)]
公共字符串MyProperty{get;set;}
}
有时,生成的值是10000(woho!),有时我会出现以下错误,我不确定原因:

AutoFixture无法从中创建实例 Ploeh.AutoFixture.Kernel.RangedNumber请求,很可能是因为 没有公共构造函数,是抽象或非公共类型

我正在使用“AutoFixture.AutoNSubstitute”编写一个单元测试:“3.49.0”


您知道这里可能有什么问题吗?

这对实际情况是否正确?是否可以提供一个复制此行为的示例?@SergeyShushlyapin您的意思是什么?@NikosBaxevanis使用一些示例代码更新了
[Range]
属性应用于
字符串
属性的预期行为是什么?