使用AutoFixture生成测试数据:解决collection 没有提到每一个T

本文关键字:每一个 collection AutoFixture 测试数据 解决 使用 | 更新日期: 2023-09-27 17:50:32

我尝试使用AutoFixture 2为具有iccollection成员的EntityFramework4类生成测试数据。

    public class Parent
    {
        public virtual ICollection<Child1> Children1 { get; set; }
        public virtual ICollection<Child2> Children2 { get; set; }
        ...
        public virtual ICollection<Child759> Children759 { get; set; }
    }
    var factory = new Ploeh.AutoFixture.Fixture();
    var parent = factory.CreateAnonymous<Parent>();

因为AutoFixture不能解析ICollection<Child1>,所以我得到一个Ploeh.AutoFixture.ObjectCreationException

我发现到目前为止唯一的解决方案是注册每一个可能的'ICollection '像这样

    var factory = new Fixture();
    factory.Register<ICollection<Child1>>(() =>
        new List<Child1>());
    ...
    factory.Register<ICollection<Child759>>(() =>
        new List<Child759>());
    var parent = factory.CreateAnonymous<Parent>();

我的问题是

有人知道一种方法或约定告诉AutoFixture总是使用List<T>如果ICollection<T>是必需的吗?

使用AutoFixture生成测试数据:解决collection <T>没有提到每一个T

AutoFixture 2.1将为各种多样性模型提供约定。计划是在去哥本哈根之前完成2.1个。