Better TDD: The AppCode Advantage


AppCode is an alternative IDE for Objective-C development. When it comes to test driven development, it’s superior to Xcode. But that’s not all. Check out the “inside-out” coding style it makes possible.

In general, AppCode lets me focus more quickly on semantics and less on fiddling with source code.

Are you interested in the AppCode templates I use?

Question: What other AppCode tricks do you like? Leave a comment below.

About the Author Jon Reid

When I was a kid, programming was fun. But working in Silicon Valley, I saw poor code lead to fear, with real human costs. Searching for ways to make life better, I learned about Design Patterns, Refactoring, and Test Driven Development (TDD). Programming became fun again! I've now been doing TDD in Apple environments for 17 years. I'm committed to software crafting as a discipline, with the hope of raising us all to greater effectiveness and joy.

follow me on:
Disclosure: The links below are affiliate links. If you buy anything, I earn a commission, at no extra cost to you.
  • Anastasia Kazakova says:

    Do you mean smth like this name suggestion at 7:12:

    • Jon Reid says:


      Yes, for Extract Variable, it would be awesome if the suggested names for mock([NSUserDefaults class]) included mockUserDefaults, or at least userDefaults.

  • Matt says:

    Hi Jon –

    I’m returning to iOS dev after a year or so break.

    Anyhow, I’ve tried to follow along with this screencast & i’m getting errors. It seems that Appcode does not know how to link in classes from the main project.

    I follow right along with your video, but when I create the Example class & I do tell it to be part of the main target, not the test target…. then I get a linker error… app code doesn’t know where to link in Example from.

    I am using Appcode 3.0.4. I wish I could get an earlier version to try with.

    I thought rather than bang my head some more (was already banging my head on Xcode the past few days).. I’ll just hang on & hopefully you know an easy way out.

    Cheers & Thank you for all the great videos!

    • Matt says:

      As a quick fix, I’ve just included my SUT files into my Tests target.

      I hope Appcode fixes this in 3.0.5.. or anyone out there know a fix?

      Thank you!

    • Jon Reid says:

      Yup, something broke in recent AppCode regarding project creation. My workaround is to use Xcode to create the project, then switch to AppCode.

      For an existing project, the real solution is to change your Tests target:

      BUNDLE_LOADER should be set to your app, like $(BUILT_PRODUCTS_DIR)/

      TEST_HOST should be set to $(BUNDLE_LOADER)

      With this, you shouldn’t have to include any production files in your test target.

  • >