嗨,我是TDD和xUnit的新手所以我想测试我的方法,例如:
ListDeleteElements (this List a, List b);
当然这不是真正的方法:)我可以使用任何Assert方法吗?我觉得这样的事情会很好
Listvalues = new List () { 1, 2, 3 }; List expected = new List () { 1 }; List actual = values.DeleteElements(new List () { 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
更多细节:CollectionAssert
MbUnit还有类似于NUnit的集合断言:Assert.Collections.cs
在当前版本的XUnit(1.5)中,您可以使用
Assert.Equal(expected,actual);
上述方法将对两个列表进行逐元素比较.我不确定这是否适用于任何先前版本.
使用xUnit,你是否想要挑选每个元素的属性来测试你可以使用Assert.Collection.
Assert.Collection(elements, elem1 => Assert.Equal(expect1, elem1.SomeProperty), elem2 => { Assert.Equal(expect2, elem2.SomeProperty); Assert.True(elem2.TrueProperty); });
这将测试预期计数并确保每个操作都经过验证.