File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Testing and the fly likes junit test and object serialization Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Engineering » Testing
Bookmark "junit test and object serialization" Watch "junit test and object serialization" New topic
Author

junit test and object serialization

Ravi Danum
Ranch Hand

Joined: Jan 13, 2009
Posts: 104

Hello,

I am writing a JUnit test. The objects I am testing contain many other objects. Some of these objects are Maps and Lists that contain other objects.

I want the JUnit tests to test for equality of the objects.

As I see it, there are four ways to go about this:

1) serialize the objects and then compare the byte arrays.

2) call an equals method in the object itself; however, the objecst to be tested have already been written, so I don't think I will be able to add an equals method to the objects.

3) have the JUnit tests perform the equals test themselves by testing each element of the map or list. This would require that the JUnit test knows each of the objects very well, instead of letting this knowledge stay in the object.

4) create a helper object that handles equals for various kinds of objects -- not the best design because this class could grow without bounds as more objects are added.


Thanks for any help that you can give.

Ravi

Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19719
    
  20

Let's move this to our testing forum.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30753
    
156

Ravi,
I wouldn't go with option #1 because it would be very difficult to figure out why the assertion was failing. I also wouldn't go with #2 because that requires writing both the equals and hashCode methods correctly and then testing them.

Option #3 is an option. I would go with option #5 though. Which is to add a toString() method to the object. It's easier to write toString() correctly than equals. It's also easier to see why the objects are different because junit highlights the differences in the string. If you can't update the class at all, you could write the toString elsewhere. But that's awkward. Why can't you change the code? Does another team/company own it or is just phobia of changing "already written" code?


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: junit test and object serialization