我有一個.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