C# 影响库-列表比较列表
我使用以下方法检查列表的相等性时遇到问题:C# 影响库-列表比较列表,c#,unit-testing,nfluent,C#,Unit Testing,Nfluent,我使用以下方法检查列表的相等性时遇到问题: 使用流出物; [事实] 公共无效集合测试() { var a=新列表{1,2}; var b=新列表{3,4}; //列表包含对a和b的引用 var list1=新列表{a,b}; 检查.That(list1).ContainsExactly(a,b);//好的 Check.That(list1).ContainsExactly(新列表{a,b});//确定 //列表包含与a和b相同的列表的新实例 var list2=新列表 { 新列表{1,2},//
使用流出物;
[事实]
公共无效集合测试()
{
var a=新列表{1,2};
var b=新列表{3,4};
//列表包含对a和b的引用
var list1=新列表{a,b};
检查.That(list1).ContainsExactly(a,b);//好的
Check.That(list1).ContainsExactly(新列表{a,b});//确定
//列表包含与a和b相同的列表的新实例
var list2=新列表
{
新列表{1,2},//新实例,与
新列表{3,4}//新实例,与b相同
};
相等(list2,新列表{a,b});//XUnit断言是正确的
检查.That(list2).ContainsExactly(a,b);//失败
Check.That(list2).ContainsExactly(新列表{a,b});//失败
}
问题:最后两次检查失败
原因:问题在于ContainsExactly
确实是按引用比较列表(如等于
),而不是按值比较列表(如do)
解决方法:
Assert.Equal()
正确处理序列李>
Enumerable.SequenceEqual
编写实现Equals()
的列表自定义子类问题:我想继续使用,是否有一些简单的方法使最后两个检查生效?简短回答:升级到NFluent 2.1+,比较行为已被修改