It's not a secret anymore!
The moose likes Testing and the fly likes How to write test unit for Constructor Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » Testing
Bookmark "How to write test unit for Constructor" Watch "How to write test unit for Constructor" New topic

How to write test unit for Constructor

Matthew Vahedi

Joined: Jan 05, 2012
Posts: 16
Hi everybody,

Please tell me how I can write down a UnitTest for the following code:
(I would like to make sure that this pattern matching fails/passes as desired) Please note that this is the constructor of a class.
Brian Burress
Ranch Hand

Joined: Jun 30, 2003
Posts: 128
I would suggest you refactor your code so that you are invoking a method call instead of a constructor (static method if you do not want to instantiate a class) and consider naming it something like isValid or isInputValid and return a boolean (true/false). Then write your tests to invoke this method and pass the various values you wish to test.
Jeanne Boyarsky
author & internet detective

Joined: May 26, 2003
Posts: 32614

Welcome to CodeRanch!

Does your code really just output a value? If so, you have two choices:
1) Extract to a method that returns a boolean as suggest above. This is the best approach.
2) Mock out System.out (and whatever object print is) with a ByteArrayOutputStream. The System class lets you change where System.out points to so you can test the results. I recommend storing the original System.out reference so you can put it back in the @After/tearDown.

[OCA 8 book] [Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Other Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, TOGAF part 1 and part 2
I agree. Here's the link:
subject: How to write test unit for Constructor
jQuery in Action, 3rd edition