Cocoa Komittee - NYC

One should avoid repeating oneself. New York City is where we started running Cocoa Kuchas last year and whilst there's a lot more stories to tell here it's time to move on.

This month we will be hosting a panel on iOS Testing. Find out more inside.

The Komittee is an event where we will take people with strong opinions, and get them started on a contentious topic and see if we can learn something from the process. Testing in general is a hot topic. Mix that with a tight platform, closed tools and you've got a lot of flames.

Details

We are graciously being hosted by Spotify, at their NYC HQ on the 25th of February at 7pm.

Topics

  • QA vs Automated Unit testing
  • Testing units of code vs Testing behavior
  • Obj-C implementation strategies vs other ecosystems
  • Time management
  • Ways to improve testing for everyone

The Panel

Meetup Page

Here

Show notes

Landon Fuller

  • Unit Testing

    OCUnit for projects supporting <= iOS 6, and <= Mac OS X 10.7

    XCTest for projects supporting >= iOS 7, >= Mac OS X 10.8

  • Continual Integration

    Jenkins: http://jenkins-ci.org/

    Confluence: https://www.atlassian.com/software/bamboo/

Paul Young

  • Frameworks

    Specta

    Expecta - https://github.com/specta/expecta

  • OCMockito - https://github.com/jonreid/OCMockito

    I used to use OCMock but had hang ups because:

    It reports test failures by raising exceptions (not useful enough, weird output, can’t click and go to the test failure). Klaas mentions this in his article linked.

    Expectations aren’t cleared when you call `stopMocking` which means you can’t use a setup step/beforeEach block to make your spec DRY. “Partial" mocks allowed me to mock part of the subject under test which seems wrong. OCMockito doesn’t allow this.

  • Tools

    Rake - a la AFNetworking https://github.com/AFNetworking/AFNetworking/blob/master/Rakefile

    XCTool - although having an issue currently: https://github.com/facebook/xctool/issues/314

    Travis - followed this article: http://www.objc.io/issue-6/travis-ci.html but there were a few gotchas:

    Travis devs forgot to add CocoaPods to the VM so you have to install the gem in your before_script phase. It works but makes the build take a lot longer. You can make it quicker by not installing the docs for the gem. https://github.com/travis-ci/travis-ci/issues/1657

    Travis devs forgot to set some of the environment variables: https://github.com/travis-ci/travis-ci/issues/1769

    Hockey - http://hockeyapp.net/features/ - The apps are pretty good: http://hockeyapp.net/apps/

    I followed the objc.io article to push from Travis to Hockey on a successful build in master. Thinking about seeing if Shenzhen (https://github.com/nomad/shenzhen) by Matt Thompson is a better long term solution.

Klaas Pieter Annema

I use Specta, Expecta and OCMockito. I've also been using Barista for integration tests. Everything is automatically run on Travis. Tools I use: Cocoapods, Bundler (so I can have a specific Cocoapoads version per project), Rake and xctool.