4 回答
TA贡献1810条经验 获得超5个赞
您可能稍微误解了方法中的最后一个参数(精度)Assert.Equal(expected, actual, precision)
。
/// <param name="precision">The number of decimal places (valid values: 0-15)</param>
因此,举例来说,如果您想要比较0.00021
并且0.00022
您只想比较小数点后 4 位,您可以这样做(它将返回true
):
Assert.Equal(0.00021, 0.00022, 4); // true
这将返回false
:
Assert.Equal(0.00021, 0.00022, 5); // false
TA贡献1828条经验 获得超3个赞
您可以使用FluentAssertions
float value = 3.1415927F; value.Should().BeApproximately(3.14F, 0.01F);
TA贡献1801条经验 获得超8个赞
您可以Assert.InRange()
在签名所在的位置使用 ,
public static void InRange<T>(T actual, T low, T high) where T : IComparable
TA贡献1860条经验 获得超8个赞
我将一些测试从 MS Test V1 移植到 xUnit,并注意到Assert带有 Delta 的测试与 xUnit 中的测试不同。
为了解决这个问题,我反编译了 MS Test 中的版本并制作了我自己的版本:
internal static class DoubleAssertion
{
const Double delta = 0.00001;
public static void Equal(Double expected, Double actual, String message = null)
{
if (Math.Abs(expected - actual) > delta)
{
var deltaMessage = $"Expected a difference no greater than <{delta.ToString(CultureInfo.CurrentCulture.NumberFormat)}>";
if (!String.IsNullOrWhiteSpace(message))
message = message + Environment.NewLine + deltaMessage;
else
message = deltaMessage;
throw new DoubleException(
expected: expected.ToString(CultureInfo.CurrentCulture.NumberFormat),
actual: actual.ToString(CultureInfo.CurrentCulture.NumberFormat),
message: message);
}
}
}
public class DoubleException : AssertActualExpectedException
{
public DoubleException(
String expected,
String actual,
String message)
: base(expected, actual, message)
{
}
}
- 4 回答
- 0 关注
- 165 浏览
添加回答
举报