我正在開發一個Java項目,其中有一個ant build,它運行由Cobertura監視的JUnit測試。這很好,我們的覆蓋率非常高。對於一些類,比如Hibernate實體,我們只有最少的代碼,但有equals和hashCode方法。測試這些是一個巨大的痛苦,並降低了覆蓋率。我們試過使用EqualsVerifier兩個類互相引用,這經常發生在Hibernate實體中。Java代碼覆蓋思路?
我們考慮過使用Commons EqualsBuilder,但是後來我們失去了讓IDE自動生成equals/hashCode方法的能力。我知道EqualsBuilder也可以通過反射來完成,但是我們不希望僅僅爲了構建時單元測試覆蓋而失去運行時性能。
一個理想的情況是,如果我們能告訴Cobertura忽略equals和hashCode方法,但那些補丁需要我們註釋我們的類,這看起來有點尷尬。
所以,我希望從別人的想法,在這種情況下,什麼效果很好。有沒有人有任何想法如何做到這一點?
謝謝!
我同意所有代碼都應該測試。心理掙扎是與那些測試的手動編碼。在這種情況下,equals方法是自動生成的,並且是正確的。所以,測試是對所用算法的測試。涉及的分支數量非常多,因此測試將是一系列將事物設置爲某個對象的組合,或者將null包含在每個分支的每一側。 也許最後最適合我的事情是將補丁提交給EqualsVerifier以允許引用彼此的類。 –
它們在創建時是'正確'的,但是在某人向對象添加另一個成員變量後它們是否正確?那會是我擔心的事情。 –