我正在尝试使用 FsCheck 为DateTimeOffset
在给定间隔内生成随机值的类编写基于基本属性的测试。
[Property]
public void ValueBetweenMinAndMax(DateTimeOffset min, DateTimeOffset max)
{
var sut = new DateTimeOffsetGenerator();
DateTimeOffset actual = sut.Next(min, max);
Assert.True(min <= actual);
Assert.True(max >= actual);
}
min
当>时,该测试很快失败,max
因为我验证了输入参数Next()
并在这种情况下抛出一个ArgumentException
。
public DateTimeOffset Next(DateTimeOffset min, DateTimeOffset max)
{
if (min > max)
{
throw new ArgumentException(nameof(min));
}
// ...
}
我不想更改实现以交换输入参数。而且我也不想在测试方法中这样做。
有没有办法教 FsCheck 生成min
andmax
值,其约束条件min
不得大于该值max
?
C# 中的示例将不胜感激,因为我对 F# 的了解不达标。