#c# #fluent-assertions
#c# #свободно-утверждения
Вопрос:
Описание
- Я перебираю 2 списка
- Я хочу сравнить 2 значения в каждой точке списка
- Я хочу, чтобы значения были в пределах 0,1% друг от друга
Завершите минимальный пример, воспроизводящий проблему
var sheetRows = new List<float> { -24.0, 0.1, 10};
var loads= new List<float> { -24.0, 0.1, 10.05};
foreach ((var xl, var db) in sheetRows.Zip(loads, (n, w) => (n, w)))
{
xl.Should().BeApproximately(db, db*0.001f);
}
Ожидаемое поведение:
Для передачи
Фактическое поведение:
Expected xl to approximate -24F /- -0.024F, but -24F differed by 0F.
at FluentAssertions.Execution.LateBoundTestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.NumericAssertionsExtensions.FailIfDifferenceOutsidePrecision[T](Boolean differenceWithinPrecision, NumericAssertions`1 parent, T expectedValue, T precision, T actualDifference, String because, Object[] becauseArgs)
at FluentAssertions.NumericAssertionsExtensions.BeApproximately(NumericAssertions`1 parent, Single expectedValue, Single precision, String because, Object[] becauseArgs)
at RoutingTests.UnitResponseModuleTests.U010_CheckTranslationAsync(Int64 sId, String sheetName, Int32 expected, Int32 excelRowCount) in C:UserssogscxsourcereposFloatComputeTestRoutingTestsUnitResponseModuleTests.cs:line 480
at NUnit.Framework.Internal.TaskAwaitAdapter.GenericAdapter`1.BlockUntilCompleted()
Версии
- Какую версию Fluent Assertions вы используете?
Последние
- Который .Вы ориентируетесь на время выполнения и версию NET? Например, .NET framework 4.6.1 или .NET Core 2.1.
.NET Core 3.1 работает под управлением NUnit
Комментарии:
1. @DTul, я знаю, что это работает. Я хочу отклонение для каждого значения. т. Е. значения с плавающей запятой имеют только 6-8 цифр, поэтому, если это 10000 и еще 0,001, то 10% отличаются для каждого!
Ответ №1:
Вы передаете отрицательное значение для точности. Скорее всего, это не сработает.
Комментарии:
1. Спасибо. Вот и все.. Показывает, что в Fluent-assertions требуется проверка аргументов