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对象具有完全相同的成员,则此测试不会失败。相等性由您可以覆盖的实现决定。对于复杂类型,这不会像您想象的那样开箱即用,因此您必须覆盖它以说明您的“平等”愿景
.Equals()
方法的IEqualityComparer
,但AllItemsAreUnique
不提供该方法。如果您不想修改该类,那么您可以围绕该类编写一个包装类,并在那里实现.Equals()
,并在将类a
作为成员的同时使用公共成员。但这变得相当复杂,几乎没有什么好处。理想情况下,每个自定义类都应该有一个.Equals()
和.GetHashCode()
实现,所以一定要考虑更改类a
。