Writing unit-tests should be part of your development process whether you write them before or after the actual coding I leave that up to you. On of the pitfalls of writing unit tests is that the units become to big.

The unit your are testing, a method in most cases probably uses some other beans or services to do its job. In your unit test you don’t want to test those other beans but just your method. Because you use decoupling you can easily override the interfaces of the services in your test case and inject those services in your instance you are testing. This is an example of a mock object.

This is maybe good for one or two mock objects but it gets tricky. Who test the mock objects? You will soon get a lot of logic in the mock objects. To reuse them they need to be extracted from the unit test. You don’t have checks if the mock objects are really called. There are several frameworks that will do this mocking for you. You supply them the interface and they will give you an implementation which can be injected into the bean thats being tested. (more…)