When I build the project I currently work on, I smile every time I see the last 2 lines:
BUILD SUCCEEDED
Total time: 9.5 seconds.
And before you start doubting, yes we do have a pretty comprehensive test suite! So comprehensive in fact that I’m quite happy making medium – large size refactorings rapidly. In fact, in the space of just over an hour I’ve been able to check in 4 such changes.
The secret to this? No out-of-process communication. All of these tests run within the code. The application communicates with a message bus and we test the actual message objects produced by the application and generate the actual messages consumed by the application, but we never actually hit the network thanks to some appropriate stubbing of the middleware vendor’s Transport API.
The only problem? At some point in the future I’ll end up on a project again with a 15+ minute build and I’ll be pulling my hair out…