0

我试图弄清楚如何确定两者何时List<FileInfo>不同。为什么 MSTest 告诉我这两个与CollectionAssert.AreEquivalentor不同SequenceEqual

测试失败:CollectionAssert.AreEquivalent failed. The expected collection contains 1 occurrence(s) of <C:\Windows\Microsoft.NET\Framework\v3.0\WPF\PenIMC.dll>. The actual collection contains 0 occurrence(s).

    string basePath = Path.Combine(Environment.GetEnvironmentVariable("windir"),
                                   @"Microsoft.NET\Framework\v3.0\WPF");

    var fiList1 = new List<FileInfo> { new FileInfo(Path.Combine(basePath, "PenIMC.dll")) };
    var fiList2 = new List<FileInfo> { new FileInfo(Path.Combine(basePath, "PenIMC.dll"))};

    CollectionAssert.AreEquivalent(fiList1, fiList2); //why is this failing?
    //And this one too...
    Assert.IsTrue(fiList1.SequenceEqual(fiList2));

我可以让它与int类似的简单类型一起使用,但不适用于我的List<FileInfo>. 如果您不能仅通过查看我上面的代码来确定这一点,也许可以提供一种聪明的方法来调查这一点 - 例如将对象序列化为 XML,我可以区分它们。我猜我错过了一些东西。

4

1 回答 1

1

我相信这与参考平等有关。如果您将 存储new FileInfo在同一个变量中,那么这是可行的。因此,您必须使用覆盖该Equals方法的复杂类型

于 2013-06-30T01:54:47.240 回答