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.
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.
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.