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

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