我有一个 .NET 类,我在其中实现了 GetHashCode 和 Equals。
虽然我相信我涵盖了所有属性并对这些函数进行了测试,但将来可能会出现有人添加属性并忘记将其添加到 GetHashCode 和 Equals 函数的情况。忘记这些函数将导致 Equals 函数对因新属性不同的对象返回 true。
我正在寻找可以在测试代码中使用的一些工具或代码,它们将遍历对象的所有现有属性并测试是否忘记了某些东西。
单元测试看起来像这样:
for each property in TargetType
dim instance1 as new TargetType
dim instance2 as new TargetType
instance1.property=1
instance2.property=2
Assert.AreNotEqual(instance1,instance2)
next
当然,属性分配应该很聪明才能使用正确的数据类型