Tools I’ve Made

I wrote the following tools, and use them regularly. Look through the list, and see what might help you.

See also: Books I Recommend

Bowling Game TDD KataBowling Game TDD Kata in Swift or Objective-C

Swift and Objective-C versions of the Bowling Game TDD Kata, designed to teach Test-Driven Development. Read about it in Xcode TDD Kata: Practice with the Bowling Game.


A library for writing test assertions, and a framework for creating your own assertions. The Objective-C version of Hamcrest.


A library for generating stubs and mocks. The Objective-C version of Mockito.


A library for unit testing UIAlertControllers. Works for both Swift and Objective-C. Read about them in How to Test UIAlertControllers and Control Swizzling.

TDD Paint by NumbersTDD Paint by Numbers

A project started by technical coach Jeff Langr, the Name Normalizer is a “Paint by Numbers” TDD exercise where we have provided the tests for you, all disabled. You can enable each test one at a time, so we have done the hard work for you. Your job is to do the rest: make the test pass, then make your code clean. Sample solutions are provided.


A library for gathering and viewing test coverage. Read about it in How to Easily Measure Code Coverage in Xcode.


An xcconfig that enables lots of Xcode warnings. Read about it in Xcode Warnings: Can You Turn Them Up to Eleven?.

TemplatesXcode Snippets for Tests

Code snippets to help you write test cases. For Xcode and AppCode, in both Swift and Objective-C. Available to all new subscribers.

XCTest templatesXCTest Templates

Apple’s template fills test suites with cruft I don’t want. By contrast, these test suite templates are sleek. They contain a single failing test, to verify that the suite has been wired up correctly. For both Swift and Objective-C.