c# - MSTest:CollectionAssert.AreEquivalent 失败。预期的集合包含 1 次出现

标签 c# .net unit-testing mstest

问题:

谁能告诉我为什么我的单元测试失败并显示此错误消息?

CollectionAssert.AreEquivalent failed. The expected collection contains 1 occurrence(s) of . The actual collection contains 0 occurrence(s).

目标:

我想检查两个列表是否相同。如果它们都包含具有相同属性值的相同元素,则它们是相同的。顺序无关紧要。

代码示例:

这是产生错误的代码。 list1list2 是相同的,即彼此的复制粘贴。

[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/

相关文章:

c# - System.Net.WebRequest 支持哪些版本的 SSL/TLS?

c# - 使用 C# 将单个文件快速添加到大型 ZIP 文件的方法

c# - 为什么需要 FaultContract,而我们只能使用 FaultException?

c# - 我可以使用 .Net 语言开发 iPhone 应用程序吗?

java - 使用 Mockito 单独测试 Fragment 类

c# - 使用 .NET 绘制图形

c# - .NET-无法构建项目

unit-testing - 关于正确使用 Julia 和 Base.Test 的方法 : run all tests even if some fail

C# Windows 窗体单元测试

.net - 这两个 ASP.NET MVC IgnoreRoute 指令有什么区别?