编程语言
首页 > 编程语言> > c# – 在不使用InlineAutoData的情况下使用InlineAutoData时的额外测试运行

c# – 在不使用InlineAutoData的情况下使用InlineAutoData时的额外测试运行

作者:互联网

我遇到的挑战是,在使用InlineAutoData时,测试也会随机运行.背景是我正在使用一些遵循规范所需的输入来测试转换.我对随机数据不感兴趣.

以下测试运行两次.一次使用InlineAutoData,另一次使用随机字符串.在随机数据运行中故意使测试变得简单并失败:

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

我的问题是,是否有办法避免随机数据的测试运行以及如何做到这一点?

解决方法:

删除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);
}

标签:c,unit-testing,xunit,autofixture
来源: https://codeday.me/bug/20190623/1271789.html