Better TDD: The AppCode Advantage

Click to play

July 15, 2014

5  comments

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.

My Dependency Injection Article in the objc.io Testing Issue

Jon Reid

When poor code got my entire team fired at a Fortune 100 company, I went looking for answers. I found Extreme Programming — and programming became fun again. Now, with 25 years of TDD in Apple environments, I teach iOS developers to build code that's easy to change and a joy to work in. I've taught teams at Alaska Airlines, ABN-AMRO, and Synchrony, and wrote iOS Unit Testing by Example.

    • Anastasia,

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

  • 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

    • 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!
      Matt

    • 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)/Foo.app/Foo

      TEST_HOST should be set to $(BUNDLE_LOADER)

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

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    Never miss a good story!

    Want to make sure you get notified when I release my next article or video? Then sign up here to subscribe to my newsletter. Plus, you’ll get access to the test-oriented code snippets I use every day!

    >