On Sat, Oct 9, 2010 at 5:58 AM, Alexei Fedotov <alexei.fedo...@gmail.com>wrote:

> I'm trying to understand best coding practices. Do you mean replacing
> assertTrue to assertEquals for assertions like a = b? isAvailable()
> assertions still may be implemented via assertTrue?
>

Mostly I prefer this:

assertEquals("hotdog", concatenate("hot", "dog"));

Over this:

assertTrue("hotdog".equals(concatenate("hot", "dog")));

If the expression fails, assertEquals() gives more detail in the failure
message. That's pretty non-controversial and we should prefer assertEquals()
when it applies.

It comes up less frequently, but I have some other preferences related to
better detail messages. When comparing arrays, equals() does the wrong
thing. To work around, I compare the string form for primitives:

byte[] actual = ...
byte[] expected = ...
assertEquals(Arrays.toString(actual), Arrays.toString(expected));

And the list form for reference types:

Object[] actual = ...
Object[] expected = ...
assertEquals(Arrays.asList(actual), Arrays.asList(expected));


I'm not actually planning on doing massive scrubbing to change styles or
anything. But when I investigate specific problematic tests, it's helpful to
fix the test to tell me everything that it can.

Cheers,
Jesse

Reply via email to