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: утверждать.Коллекции.cs
в текущей версии XUnit (1.5) вы можете просто использовать
утверждать.Равный (ожидаемый, фактический);
вышеописанный метод будет делать элемент за элементом сравнение двух списков. Я не уверен, что это работает для любой предыдущей версии.
С помощью xUnit, если вы хотите, чтобы вишневый выбор свойства каждого элемента для тестирования можно использовать Assert.Коллекция.
Assert.Collection(elements, elem1 => Assert.Equal(expect1, elem1.SomeProperty), elem2 => { Assert.Equal(expect2, elem2.SomeProperty); Assert.True(elem2.TrueProperty); });это проверяет ожидаемое количество и гарантирует, что каждое действие проверяется.
Comments