gpt4 book ai didi

c# - AutoFixture 全局注册类型

转载 作者:太空狗 更新时间:2023-10-29 20:20:07 26 4
gpt4 key购买 nike

我在这个实例中使用 AutoFixture 来具体化包含 Mongo ObjectId 的对象,就像这样

Fixture fixture = new Fixture();
fixture.Register(ObjectId.GenerateNewId);

但我每次测试都这样做。是否有可能以某种方式为所有测试注册这个全局变量?

最佳答案

没有办法全局(或静态)执行此操作。

我通常做的是创建一个 TestConventions 类,其中包含我想应用于每个测试的所有自定义设置。

internal class TestConventions : CompositeCustomization
{
public TestConventions() :
base(
new MongoObjectIdCustomization())
{

}

private class MongoObjectIdCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Register(ObjectId.GenerateNewId);
}
}
}

然后我将这些约定应用于每个测试:

var fixture = new Fixture().Customize(new TestConventions());

如果您使用的是 AutoFixture.XUnit2(或 AutoFixture.NUnit)插件,您可以通过定义一个导入测试约定的属性来减少此样板文件:

public class MyProjectAutoDataAttribute : AutoDataAttribute
{
public MyProjectAutoDataAttribute() : base(
new Fixture().Customize(new TestConventions()))
{

}
}

然后将其应用于您的测试用例:

[Theory, MyProjectAutoData]
public void SomeFact(SomeClass sut)
{

}

关于c# - AutoFixture 全局注册类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32453996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com