Continuous integration
During development using TDD, we test our code all the time. In fact, we only write code if a failing test tells us to. But let's face it; sometimes, you're not in the right mood or believe that without tests, you are faster (which is rarely the case) and need to fix that bug now. Whatever the reason behind why you don't write a test first is, you still want the test harness to prevent you from breaking existing features. The idea is to always have a compliable, presentable app in your source code management system.
Continuous integration helps with this task. A continuous integration server can be configured to compile the project and run all the tests whenever someone makes a change to the repository. Or, you can configure it to compile and run the tests every night at 2 AM, for example. This way, when you arrive at your office at 8 AM, you can check whether the project is still in good shape.
In this section, we will use Xcode Server to set up continuous integration...