8 Testing with mock objects
This chapter covers
- Introducing and demonstrating mock objects
- Executing different refactorings with the help of mock objects
- Practicing on an HTTP connection sample application
- Working with and comparing the EasyMock, JMock and Mockito frameworks
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
- Rich Cook
Unit-testing each method in isolation from the other methods or the environment is certainly a nice goal. How do you perform this task? You saw in chapter 7 that the stubbing technique lets you unit-test portions of code by isolating them from the environment (such as by stubbing a web server, the file system, a database, and so on). What about fine-grained isolation, such as being able to isolate a method call to another class? Can you achieve this without deploying huge amounts of energy that would negate the benefits of having tests?
The answer is yes. The technique is called mock objects. Tim Mackinnon, Steve Freeman, and Philip Craig first presented the mock-objects concept at XP2000. The strategy allows you to unit-test at the finest possible level. You will develop method by method, after having provided unit tests for each method.