An example project for hands-on Unit Testing
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

CocoaHeads Atlanta - Unit Test Lab

The repo for the unit test lab is set up in such a way that each branch is a new "idea." It's a bit of SCM spaghetti, but you will focus your git-foo on the stage-one through stage-four branches.

  • BNR-finished

    This is an idea of how the finished project looks from the iOS Programming: The Big Nerd Ranch Guide 3rd Ed. book. This is only here so you can check out how the app might work at the end of it all

  • master

    Make a pull request (what that means and how to do that here), and I'll merge your code changes into the project!

  • stage-one

    Model objects: Some production code has been written for our model objects, but not any unit tests. We warmed ourselves up in October's meeting by writing unit tests for our two model classes. What else needs to be added to our production classes?

  • stage-two

    View controllers: Let's look at writing some unit tests for view controllers written primarily in code...

  • stage-three

    Refactoring view controllers: Let's refactor that code into the storyboards...

  • ###stage-four More view controller practice: Write unit tests for the secondary detail view controller
  • stage-five


    • Migrate the model objects to Core Data.
    • Bifurcate the app into iPhone and iPad versions.
    • Change the item detail view controller to subclass from UITableViewController.
    • Add in the ability to use UIImagePickerViewController.

The repository was designed for you to:

  1. Fork the project on Github and clone it to your local machine (full instructions here)
  2. Create your own "topic" branches from each of the "stage" branches

    git checkout stage-one -b my-local-stage-one

  3. Commit your unit tests and production code additions
  4. Send a pull requests to have your code integrated back into the master branch!
  5. Use Glassboard (invite code - pvkov) or create a Github issue to discuss any pieces of the project