Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 影响库-列表比较列表_C#_Unit Testing_Nfluent - Fatal编程技术网

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)

解决方法:

  • 使用XUnit
    Assert.Equal()
    正确处理序列
  • 使用
    Enumerable.SequenceEqual
    编写实现
    Equals()
    的列表自定义子类

  • 问题:我想继续使用,是否有一些简单的方法使最后两个检查生效?

    简短回答:升级到NFluent 2.1+,比较行为已被修改