在我目前的项目中,我有几个 IEqualitycomparers。
它们采用对象的几个属性并比较它们。
属性可以是相等的,不同的,这既适用于值,也适用于空值。
我想对这些进行单元测试,但所有不同的可能性都是疯狂的。我怎样才能有效地测试这些?
更新
目前它们通过属性而不是构造函数获取它们的值,因为它们填充了 entlib 的数据块。
示例(在 vb.net 中,但我也讲 C#):
Public Class GuarantyEqualityComparer
Implements IEqualityComparer(Of Guaranty)
Public Overloads Function Equals(x As Guaranty, y As Guaranty) As Boolean Implements IEqualityComparer(Of Guaranty).Equals
Return x.ClientCode = y.ClientCode AndAlso x.LocationCode = y.LocationCode AndAlso x.CategoryCode = y.CategoryCode AndAlso x.GuarantyCode = y.GuarantyCode
End Function
Public Overloads Function GetHashCode(obj As Guaranty) As Integer Implements IEqualityComparer(Of Guaranty).GetHashCode
Const format As String = "{0}{1}{2}{3}"
Return String.Format(CultureInfo.InvariantCulture, format, obj.ClientCode, obj.LocationCode, obj.CategoryCode, obj.GuarantyCode).GetHashCode()
End Function
End Class