4 回答

TA貢獻1810條經(jīng)驗 獲得超5個贊
您可能稍微誤解了方法中的最后一個參數(shù)(精度)Assert.Equal(expected, actual, precision)
。
/// <param name="precision">The number of decimal places (valid values: 0-15)</param>
因此,舉例來說,如果您想要比較0.00021
并且0.00022
您只想比較小數(shù)點后 4 位,您可以這樣做(它將返回true
):
Assert.Equal(0.00021, 0.00022, 4); // true
這將返回false
:
Assert.Equal(0.00021, 0.00022, 5); // false

TA貢獻1828條經(jīng)驗 獲得超3個贊
您可以使用FluentAssertions
float?value?=?3.1415927F; value.Should().BeApproximately(3.14F,?0.01F);

TA貢獻1801條經(jīng)驗 獲得超8個贊
您可以Assert.InRange()
在簽名所在的位置使用 ,
public static void InRange<T>(T actual, T low, T high) where T : IComparable

TA貢獻1860條經(jīng)驗 獲得超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 關注
- 242 瀏覽
添加回答
舉報