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

时间:2015-10-27 06:42:04

标签: c# unit-testing xunit autofixture

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

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

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

我的问题是,是否有办法避免使用随机数据进行测试运行以及如何执行此操作?

1 个答案:

答案 0 :(得分:4)

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