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。