在我的单元测试方法中,
我有两个清单。一个是 expectedValueList ,另一个是 actualvalueList 。
expectedValueList={a=1,b=2,c=3,d=4}
actualvalueList={d=4,b=2,c=3,a=1}
我只是通过这个来比较一个元素
CollectionAssert.AreEqual(expectedValueList.Select(x => x.a).ToList() ,actualvalueList.Select(x => x.a).ToList())
如何比较剩余的元素?
答案 0 :(得分:1)
如果他们已经直接订购,您可以使用SequenceEqual
expectedValueList.SequenceEqual(actualvalueList);
如果它们不是有序的,那么在使用等于
的序列之前也可以应用排序expectedValueList.OrderBy(x => x).SequenceEqual(actualvalueList.OrderBy(y => y));
实施例
List<int> l1 = new List<int> { 1, 2, 3, 4 };
List<int> l2 = new List<int> { 3, 1, 2, 4 };
if (l1.OrderBy(x => x).SequenceEqual(l2.OrderBy(y => y)))
{
Console.WriteLine("List are equal"); // will write this
}
if (l1.SequenceEqual(l2))
{
Console.WriteLine("List are equal");
}
else
{
Console.WriteLine("List are not equal"); // will write this
}
答案 1 :(得分:0)
我期待它在评论中提到的List<int>
而不是键值对。尝试这样的事情:
Assert.AreEqual(actualvalueList.Count(), expectedValueList.Count());
for(int i=0;i<actualvalueList.Count();i++)
{
Assert.AreEqual(actualvalueList[i], expectedValueList[i]);
}
或
CollectionAssert.AreEqual(expectedValueList, actualvalueList);
如果您不想比较一个值,请从列表中删除:
actualvalueList.Remove(actualvalueList.Select(x => x.d).FirstOrDefault())