c# – AutoFixture全局寄存器类型
发布时间:2020-12-15 08:30:44 所属栏目:百科 来源:网络整理
导读:我在这个例子中使用AutoFixture来实现包含Mongo ObjectId的对象,就像这样 Fixture fixture = new Fixture();fixture.Register(ObjectId.GenerateNewId); 但我每次测试都会这样做.是否有可能以某种方式为所有测试注册这个全球? 解决方法 全局(或静态)无法做
我在这个例子中使用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) { } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |