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# Nunit断言列表<;SomeObject>;包含唯一的值_C#_Unit Testing_Nunit_Assert_Assertion - Fatal编程技术网

C# Nunit断言列表<;SomeObject>;包含唯一的值

C# Nunit断言列表<;SomeObject>;包含唯一的值,c#,unit-testing,nunit,assert,assertion,C#,Unit Testing,Nunit,Assert,Assertion,假设我们有课 class A { int num; string str; // more methods and data members } 在nunit测试中,我们如何按照 List<A> listA = GetUniqueValueList(); CollectionAssert.AllItemsAreUnique(listA, "ListA items should be unique."); List listA=GetUniqueValueList(); Colle

假设我们有课

class A
{
int num;
string str;
// more methods and data members
}
在nunit测试中,我们如何按照

List<A> listA = GetUniqueValueList();
CollectionAssert.AllItemsAreUnique(listA, "ListA items should be unique.");
List listA=GetUniqueValueList();
CollectionAssert.AllItemsAreUnique(listA,“listA项目应该是唯一的”);

据我所知,AllItemsAreUniqe只适用于具有值类型的列表。此外,如果两个A对象具有完全相同的成员,则此测试不会失败。

相等性由您可以覆盖的实现决定。对于复杂类型,这不会像您想象的那样开箱即用,因此您必须覆盖它以说明您的“平等”愿景


那么你的意思是我重写类A中的Equals,如果说A.Num,则返回false!=b、 嗯?这样行吗?如果我没有这个班怎么办?只是好奇。虽然我有访问权限,但建议不要修改它。有时您也可以指定一个类似于外部
.Equals()
方法的
IEqualityComparer
,但
AllItemsAreUnique
不提供该方法。如果您不想修改该类,那么您可以围绕该类编写一个包装类,并在那里实现
.Equals()
,并在将类
a
作为成员的同时使用公共成员。但这变得相当复杂,几乎没有什么好处。理想情况下,每个自定义类都应该有一个
.Equals()
.GetHashCode()
实现,所以一定要考虑更改类
a