Ale*_*gas 4 unit-testing xunit.net autofixture
我是Xunit和AutoFixture的新手,他写的理论如下:
[Theory, AutoData]
public void Some_Unit_Test(List<MyClass> data)
{
// Test stuff
}
Run Code Online (Sandbox Code Playgroud)
MyClass看起来像:
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这将导致AutoFixture创建每个属性具有随机值的项目列表。很好,但是我希望该IsActive属性始终为真。
我可以在每次测试开始时将其设置为true,但我猜有一种更聪明的方法。我看了看InlineData,ClassData,PropertyData,甚至Inject()但没有相当似乎适合。
我该如何改善?
这是执行此操作的一种方法:
public class Test
{
[Theory, TestConventions]
public void ATestMethod(List<MyClass> data)
{
Assert.True(data.All(x => x.IsActive));
}
}
Run Code Online (Sandbox Code Playgroud)
的TestConventionsAttribute定义为:
internal class TestConventionsAttribute : AutoDataAttribute
{
internal TestConventionsAttribute()
: base(new Fixture().Customize(new TestConventions()))
{
}
private class TestConventions : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Customize<MyClass>(c => c.With(x => x.IsActive, true));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |