用途:在 .NET 单元测试与集成测试中,把 AutoFixture 的自动对象填充能力与 Bogus 的真实感假数据结合,让 user.Email 这类属性从匿名字符串变为 john.doe@example.com,其余属性仍由 AutoFixture 自动填充。
主要能力:通过 ISpecimenBuilder 实现属性层级(按 Email、Phone、FirstName 等属性名匹配)与类型层级(为 User、Address 等整个类型注册 Faker)整合;提供 EmailSpecimenBuilder、PhoneSpecimenBuilder、NameSpecimenBuilder、AddressSpecimenBuilder 等常用构建器;扩展方法 fixture.WithBogus()、WithOmitOnRecursion()、WithSeed(seed)、WithRepeatCount(count);支持 HybridTestDataGenerator(Generate<T> 等统一 API)与 IntegratedTestDataFactory(CreateFresh、CreateMany、GetCached、CreateTestScenario);提供 BogusAutoDataAttribute 供 xUnit Theory 使用。
使用方式:安装 AutoFixture、AutoFixture.Xunit2、Bogus、xunit、AwesomeAssertions 等包;用 OmitOnRecursionBehavior 替换 ThrowingRecursionBehavior 处理循环引用;通过 fixture.Customizations.Insert(0, builder) 控制匹配优先级;用 Seed 提升稳定性。
限制:AutoFixture 与 Bogus 随机数机制不同,Seed 只能保证行为与格式稳定,无法保证所有属性值完全一致;需要完全可复现时应使用单一工具(如 Faker<User>().UseSeed(12345))。具体版本与完整代码示例以原始资料为准。