1 February 2014
Follow @ortaOne 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
- db - @dblockdotorg
- Benjamin Jackson - @benjaminjackson
- Mike Lazer-Walker - @lazerwalker
- Klaas Pieter - @klaaspieter
- Paul Young - @py
- Brian Gerstle - @b_gerstle
- Landon J Fuller - @landonfuller
Meetup Page
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.