我有一个.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
当然的财产分配应该是聪明地使用正确的数据类型
即使上面的代码为'Equals'工作,GetHashCode会变得相当复杂(因为两个不相等的对象可能具有相同的哈希码) – 2013-05-03 06:28:15
甚至在Equals上捕获错过的属性总比不好抓住它。我可以希望修复也将包括GetHashCode – 2013-05-03 09:38:18