j.u.Objects follow-up: deepEquals(Object, Object)?

Eamonn McManus Eamonn.McManus at Sun.COM
Fri Oct 9 10:02:34 UTC 2009

 > Don't you know about assertArrayEquals() in JUnit ? It's in version 4.5.

I can use that if I know the values are arrays.  The sort of case I'm thinking
of is a data-driven test where I have a big array with a lot of inputs and
the corresponding expected outputs, some but not all of which might be arrays,
including primitive arrays.  For example, the inputs are expressions in a script
language and the outputs are what those expressions should evaluate to.  The test
iterates over the array and does assertDeepEquals for each input/output pair.

But it is true that I could use the same new Object[] {x} trick there, in
other words define assertDeepEquals in terms of assertArrayEquals,
to get better failure messages.  The main advantages I see of
deepEquals(Object, Object) are that it avoids allocating a throw-away array
(which is not a concern in unit tests), and more importantly that it is
easier to find than the new Object[] {x} trick.

Éamonn McManus · JMX Spec Lead · http://weblogs.java.net/blog/emcmanus

Ulf Zibis wrote:
> Am 09.10.2009 11:30, Eamonn McManus schrieb:
>> Joseph D. Darcy wrote:
>> > What are scenarios where this method would be used?
>> I use a similar method fairly often in unit tests.  JUnit's 
>> assertEquals doesn't
>> do the right thing if its arguments happen to be arrays, so I use the 
>> following
>> simple if inefficient implementation:
> Don't you know about assertArrayEquals() in JUnit ? It's in version 4.5.
> -Ulf

More information about the core-libs-dev mailing list