gpt4 book ai didi

unit-testing - 使用 AutoFixture 将集合的属性设置为 Xunit 理论的数据

转载 作者:行者123 更新时间:2023-12-05 00:24:33 25 4
gpt4 key购买 nike

我是 Xunit 和 AutoFixture 的新手,正在编写一个如下所示的理论:

[Theory, AutoData]
public void Some_Unit_Test(List<MyClass> data)
{
// Test stuff
}

MyClass 看起来像:
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}

这会导致 AutoFixture 为每个属性创建一个带有随机值的项目列表。这很好,但我希望 IsActive 属性始终为真。

我可以在每次测试开始时将其设置为 true,但我猜有一种更聪明的方法。我查看了 InlineDataClassDataPropertyData ,甚至 Inject() ,但似乎没有什么合适的。

我该如何改进?

最佳答案

这是执行此操作的一种方法:

public class Test
{
[Theory, TestConventions]
public void ATestMethod(List<MyClass> data)
{
Assert.True(data.All(x => x.IsActive));
}
}
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));
}
}
}

关于unit-testing - 使用 AutoFixture 将集合的属性设置为 Xunit 理论的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26031672/

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