0

List<FileInfo>2つが異なる場合を判断する方法を見つけようとしています。CollectionAssert.AreEquivalentこれらの 2 つがorで異なると MSTest が教えてくれるのはなぜ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));

thisintのような単純な型でこれを動作させることはできますが、 my では動作しません。上記の私のコードを見ただけではこれを判断できない場合は、オブジェクトを XML にシリアル化するなど、これを調査する賢い方法を提供してください。それらを比較できます。しかし、何かが足りないと思います。List<FileInfo>

4

1 に答える 1

1

これは参照の等価性に関係していると思います。new FileInfoを同じ変数に格納すると、これは機能します。したがって、Equalsメソッドをオーバーライドする複合型を使用する必要があります

于 2013-06-30T01:54:47.240 に答える