xUnit:断言两个List <T>是否相等?

嗨,我是TDD和xUnit的新手,所以我想testing我的方法是这样的:

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.Net可以识别集合,所以你只需要做

 Assert.Equal(expected, actual); // Order is important 

您可以在CollectionAsserts.cs中看到其他可用的集合断言

对于NUnit库集合的比较方法是

 CollectionAssert.AreEqual(IEnumerable, IEnumerable) // For sequences, order matters 

 CollectionAssert.AreEquivalent(IEnumerable, IEnumerable) // For sets, order doesn't matter 

更多细节在这里: 收集声明

MbUnit也有类似于NUnit: Assert.Collections.cs的集合断言

在当前版本的XUnit(1.5)中,你可以使用

Assert.Equal(预期,实际);

上面的方法将通过两个列表的元素比较来做一个元素。 我不确定这是否适用于任何以前的版本。

有了xUnit,如果你想樱桃挑选每个元素的属性来testing你可以使用Assert.Collection。

 Assert.Collection(elements, elem1 => Assert.Equal(expect1, elem1.SomeProperty), elem2 => { Assert.Equal(expect2, elem2.SomeProperty); Assert.True(elem2.TrueProperty); }); 

这testing了预期的计数并确保每个操作都被validation。