KellermanSoftware CompareNetObjects,比较不同类型的集合

时间:2018-12-04 17:49:11

标签: c# unit-testing comparison

我正在使用CompareNetObjects进行系统的自动化测试。这对于确保性能优化不会改变系统的预期行为以及确保不会引入错误很有用。

当我有一个以抽象方式声明的集合时,我希望比较的是内容,而不是集合本身。但是,我看不到启用此功能的选项。

班级:

public class MustBeCorrect
{
     public string Name { get; set; }
     IEnumerable<string> Items { get; set; }
}

测试:

[Fact] void IsCorrect()
{
    var obj1 = new MustBeCorrect
    {
        Name = "Kitty",
        Items = new string[]
        {
           "Collar",
           "Bell"
        }
    };
    var obj2 = new MustBeCorrect
    {
        Name = "Kitty",
        Items = new List<string>
        {
           "Collar",
           "Bell"
        }
    };
    comparer.Compare(obj1, obj2); // False!
}

以上两个对象的比较不相等,即使两个对象之间的唯一区别是一个使用数组,另一个使用列表。但是,就我的合同而言,这两个似乎应被视为等同于我。

如何配置比较选项以仅比较集合的内容,而不是集合本身?

1 个答案:

答案 0 :(得分:0)

没有一种方法可以专门用于收藏。

但是,您可以在IgnoreObjectTypes中设置一个名为ComparisonConfig的选项。默认值为false,但是如果将其设置为true,它应该会为您提供您想要的收藏行为。

请注意,这将忽略所有比较的对象类型。