在使用InlineAutoData而不使用InlineAutoData时运行额外的测试

本文关键字:InlineAutoData 测试 运行 | 更新日期: 2023-09-27 18:19:18

我面临的挑战是,当使用InlineAutoData时,测试也使用随机值运行。背景是,我正在测试带有一些输入的转换,这些输入需要遵循规范。我对随机数据不感兴趣。

下面的测试运行两次。一次是InlineAutoData,另一次是随机字符串。该测试已被故意简化,并在随机数据运行时失败:

[Theory, GeneralTransferTestConventions]
[InlineAutoData("Allowed", "Allowed")]
public void Testing(string test1Data, string test2Data)
{
    Assert.Equal(test1Data, test2Data);
}

我的问题是,如果有一种方法来避免测试运行随机数据和如何做到这一点?

在使用InlineAutoData而不使用InlineAutoData时运行额外的测试

删除AutoFixture组件集成:

[Theory]
[InlineData("Allowed", "Allowed")]
public void Testing(string test1Data, string test2Data)
{
    Assert.Equal(test1Data, test2Data);
}

这是一个纯xUnit.net测试,并且是完全确定的。

需要注意的是,如果只有一组测试用例,就没有理由使测试参数化,所以要么添加更多的InlineData测试用例:

[Theory]
[InlineData("Allowed", "Allowed")]
[InlineData("foo", "foo")]
[InlineData("bar", "bar")]
public void Testing(string test1Data, string test2Data)
{
    Assert.Equal(test1Data, test2Data);
}

或者让它成为一个"正常"的测试:

[Fact]
public void Testing()
{
    var test1Data = "Allowed";
    var test2Data = "Allowed";
    Assert.Equal(test1Data, test2Data);
}