Back
What is the most useless piece of unit test you have seen?
Added: August 17, 2008
When I was thinking what should be my first post in my new professional blog I have remembered test method (in one undisclosed code base) I have seen a few months ago. It was test for equals()
. Rather amusing one, clearly not doing what it was intended for. (I have changed it a bit to protect author and I should state that it was written years ago, thus its author does not do these things anymore).
public final void testEqualsObject() { final SomeObject objOne = // new ... final SomeObject objTwo = // new ... final SomeObject tmpObj = objOne; assertTrue("The equals() failed", objOne.equals(tmpObj)); assertFalse("The equals() failed", objOne.equals(objTwo)); }That
assertTrue
can test only default implementation of Object.equals
that uses ==
, but nothing more. assertFalse
is a bit better, but not enough for quite complicated contract equals
and hashCode
have.
I have fixed it, unfortunatelly not in way I would like to - by usage of EqualsTester, because this and all other implementations of equals()
use
instanceof
that is controversial enough to start fighting about right now.
Do me a favor, any time you need to test equals
and hashCode
use EqualsTester
, please. You will not regret it in the long term.
What is the most useless piece of unit test you have seen? Your code done in past counts too ;-) How did you fix it?
Back