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);


есть что-то подобное ?

376   3  

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

    Ничего не найдено.