xUnit: утверждать, что два списка равны?
Привет, я новичок в 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);
есть что-то подобное ?
3 ответов
xUnit.Net распознает коллекции, поэтому вам просто нужно сделать
Assert.Equal(expected, actual); // Order is important
вы можете увидеть другие доступные утверждения коллекции в CollectionAsserts.cs
на Нанит методы сравнения коллекции библиотеки
CollectionAssert.AreEqual(IEnumerable, IEnumerable) // For sequences, order matters
и
CollectionAssert.AreEquivalent(IEnumerable, IEnumerable) // For sets, order doesn't matter
подробности здесь: CollectionAssert
MbUnit также имеет утверждения коллекции, похожие на NUnit: Assert.Коллекции.cs
в текущей версии XUnit (1.5) вы можете просто использовать
Assert.Равный (ожидаемый, фактический);
вышеуказанный метод будет делать элемент по элементу сравнения двух списков. Я не уверен, что это работает для любой предыдущей версии.
С xUnit, если вы хотите вишневый выбор свойств каждого элемента для тестирования, вы можете использовать Assert.Коллекция.
Assert.Collection(elements,
elem1 => Assert.Equal(expect1, elem1.SomeProperty),
elem2 => {
Assert.Equal(expect2, elem2.SomeProperty);
Assert.True(elem2.TrueProperty);
});
это проверяет ожидаемое количество и гарантирует, что каждое действие проверено.