我面临的挑战是,当使用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);
}