I’m working on some episodes about testing for the launch of MotionInMotion and so I decided, I’ll write a quick post about the testing tools out there at the moment.

UPDATE: Here is the episode on BDD with Frank and MacBacon


Most of you should be familiar with MacBacon, it’s the testing tool that comes shipped with RubyMotion. It’s a “small RSpec clone” but it’s really “a RubyMotion port of the small RSpec clone called bacon”.

Being an RSpec fan, this is of course my go to testing tool, and all I’ll use on small apps.

Some links for you:

NOTE: I’ll be covering this in one of the launch episodes.

Kosher Bacon

There is a less well known kosher alternative to MacBacon called Kosher Bacon, which is made for all you MiniTest::Unit/Test::Unit fans out there.

It’s not a complete port of MiniTest::Unit or Test::Unit, it’s simply putting a layer over MacBacon so you can write your tests the way you like, so (as far as I can tell) you have access to everything MacBacon provides.

Cucumber Fans

When it comes to doing cucumber style acceptance testing with RubyMotion, you’ve got two great tools. Frank and Calabash.


I personally have a preference for Frank, mainly because it can be used to test both iOS and OS X apps.

It’s maintained by the awesome Pete Hodgson and has it’s own great community behind it. Really easy to setup, especially using the motion-frank gem, takes less than a few minutes. Just don’t make the same mistake I did one day (well several days) without thinking.

Some links for you:

NOTE: I’ll be covering this in one of the launch episodes.


Though I prefer Frank, and though Calabash is iOS only (well Android too), it does have a benefit. The Xamarin Test Cloud, which is great if you want to get a CI setup going for multiple iOS devices.

Calabash can’t do OS X apps, and doesn’t have Symbiote, but it really does cover all your iOS acceptance testing, which for a lot of you I know that’s all you’re interested in.

Some links for you:

Tools to help our testing

It wouldn’t be part of the ruby community if we didn’t have a bunch of extra tools to help us would it.

Stubbing and Mocking

There is several tools for your mocks and stubs, motion-stump, facon, and for stubbing out your web requests webstub.

Other stuff

For creating fixtures for files and stuff (like a cache file, or database) you’ve got motion-fixtures.

If you’re wanting to pretty up the output in the terminal there is awesomeprintmotion and motion-colorize.

And finally, if you’re a guard fan: guard-motion.

I’ll probably keep updating this over time, but when you’re looking for tools, always checkout the RubyMotion Wrappers website and search for “rubymotion” on GitHub.