【发布时间】:2026-02-09 23:20:05
【问题描述】:
我正在使用 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!
}
上述两个对象比较不相等,尽管两个对象之间的唯一区别是一个使用数组,另一个使用列表。然而,就我的合同而言,这两个似乎应该被视为与我平等。
如何将比较选项配置为仅比较集合的内容,而不是集合本身?
【问题讨论】:
标签: c# unit-testing comparison