带参数的 AutoFixture AutoData

AutoFixture AutoData with arguments

如何为 AutoData 指定参数?

例如我的代码中有以下内容:

var fixture = new Fixture();
fixture.Customizations.Add(
   new TypeRelay(
      typeof (IOrder),
      typeof (Order)));

我想用不同的夹具数据进行多次测试运行。我将如何设置如下内容:

.Customizations.Add().Build()/.With/.Do 以便在使用 AutoData fixture 时有此指定?

你可以package various repeated AutoFixture customizations into one or more Customizations.

对于特定示例,它看起来像这样:

public class OrderCustomization : ICustomization
{
    public void Customize(IFixture fixture)
    {
        fixture.Customizations.Add(
            new TypeRelay(
                typeof(IOrder),
                typeof(Order)));
    }
}

用法:

var fixture = new Fixture().Customize(new OrderCustomization());
var order = fixture.Create<IOrder>();

您可以通过 creating a derived attribute that passes a Fixture instance to the appropriate base class constructor 将它们与 [AutoData] 一起使用。