我遇到的挑战是,在使用InlineAutoData
时,测试也会随机运行。背景是我正在使用一些遵循规范所需的输入来测试转换。我对随机数据不感兴趣。
以下测试运行两次。一次使用InlineAutoData
,另一次使用随机字符串。在随机数据运行中故意使测试变得简单并失败:
[Theory, GeneralTransferTestConventions]
[InlineAutoData("Allowed", "Allowed")]
public void Testing(string test1Data, string test2Data)
{
Assert.Equal(test1Data, test2Data);
}
我的问题是,是否有办法避免使用随机数据进行测试运行以及如何执行此操作?
答案 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);
}