问题:
谁能告诉我为什么我的单元测试失败并显示此错误消息?
CollectionAssert.AreEquivalent failed. The expected collection contains 1 occurrence(s) of . The actual collection contains 0 occurrence(s).
目标:
我想检查两个列表是否相同。如果它们都包含具有相同属性值的相同元素,则它们是相同的。顺序无关紧要。
代码示例:
这是产生错误的代码。 list1
和 list2
是相同的,即彼此的复制粘贴。
[TestMethod]
public void TestListOfT()
{
var list1 = new List<MyPerson>()
{
new MyPerson()
{
Name = "A",
Age = 20
},
new MyPerson()
{
Name = "B",
Age = 30
}
};
var list2 = new List<MyPerson>()
{
new MyPerson()
{
Name = "A",
Age = 20
},
new MyPerson()
{
Name = "B",
Age = 30
}
};
CollectionAssert.AreEquivalent(list1.ToList(), list2.ToList());
}
public class MyPerson
{
public string Name { get; set; }
public int Age { get; set; }
}
我也试过这一行 ( source )
CollectionAssert.AreEquivalent(list1.ToList(), list2.ToList());
和这一行(source)
CollectionAssert.AreEquivalent(list1.ToArray(), list2.ToArray());
附言
相关 Stack Overflow 问题:
我已经看到了这两个问题,但答案没有帮助。
最佳答案
你完全正确。除非你提供类似 IEqualityComparer<MyPerson>
的东西或实现 MyPerson.Equals()
, 两个 MyPerson
对象将与 object.Equals
进行比较,就像任何其他对象一样。由于对象不同,Assert 会失败。
关于c# - MSTest:CollectionAssert.AreEquivalent 失败。预期的集合包含 1 次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5194966/