Вы спросили, как выполнить желаемый тест, используя метод CollectionAssert, не просматривая список.Я уверен, что это очевидно, но цикличность - это именно то, что должен делать такой метод ...
Краткий ответ на ваш точный вопрос заключается в том, что вы не можете использовать методы CollectionAssert, чтобы делать то, что вы хотите.Однако, если вам действительно нужен простой способ сравнить списки чисел с плавающей запятой и подтвердить их равенство, тогда читайте дальше.
Метод Assert.AreEqual( double expected, double actual, double tolerance )
освобождает вас от необходимости самостоятельно писать утверждения отдельных элементов.,Используя LINQ, вы можете сделать что-то вроде этого:
double delta = 0.0001;
IEnumerable<double> expectedValues;
IEnumerable<double> actualValues;
// code code code
foreach (var pair in expectedValues.Zip(actualValues, Tuple.Create))
{
Assert.AreEqual(pair.Item1, pair.Item2, delta, "Collections differ.");
}
Если вы хотите стать более изощренным, вы можете использовать это в своем собственном методе, поймать исключение AssertionException, помассировать его и отбросить для более чистогоинтерфейс.
Если вас не волнует , какие элементы отличаются:
var areEqual = expectedValues
.Zip(actualValues, Tuple.Create)
.Select(tup => Math.Abs(tup.Item1 - tup.Item2) < delta)
.All(b => b);
Assert.IsTrue(areEqual, "Collections differ.");