Я новичок в TDD и xUnit, поэтому хочу протестировать свой метод, который выглядит примерно так:
List<T> DeleteElements<T>(this List<T> a, List<T> b);
Есть ли какой-нибудь метод Assert, который я могу использовать? Я думаю что-то подобное было бы неплохо
List<int> values = new List<int>() { 1, 2, 3 };
List<int> expected = new List<int>() { 1 };
List<int> actual = values.DeleteElements(new List<int>() { 2, 3 });
Assert.Exact(expected, actual);
Есть что-то подобное?
В текущей версии XUnit (1.5) вы можете просто использовать
Вышеупомянутый метод будет выполнять сравнение элементов двух списков. Я не уверен, работает ли это с какой-либо предыдущей версией.
источник
С xUnit, если вы хотите выбрать свойства каждого элемента для тестирования, вы можете использовать Assert.Collection.
Это проверяет ожидаемое количество и гарантирует, что каждое действие проверено.
источник
Недавно я использовал
xUnit 2.4.0
иMoq 4.10.1
пакеты в моем asp.net ядре 2.2 приложения.В моем случае мне удалось заставить его работать в два этапа:
Определение реализации
IEqualityComparer<T>
Передайте экземпляр компаратора в качестве третьего параметра в
Assert.True
метод:Assert.True(expected, actual, new MyEqualityComparer());
Но есть еще один более приятный способ получить тот же результат с помощью пакета FluentAssertions . Это позволяет делать следующее:
Интересно, что это
Assert.Equal()
всегда терпит неудачу, даже когда я заказывал элементы двух списков, чтобы они располагались в одном порядке.источник