O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Test-Driven iOS Development with Swift

Book Description

Create fully-featured and highly functional iOS apps by writing tests first

About This Book

  • Learn test-driven principles to help you build apps with fewer bugs and better designs
  • Become more efficient while working with Swift to move on to your next project faster!
  • Learn how to incorporate all of the principles of test-driven development (TDD) in to your daily programming workflow

Who This Book Is For

If debugging iOS apps is a nerve-racking task for you and you are looking for a fix, this book is for you.

What You Will Learn

  • Implement TDD in swift application development
  • Get to know the fundamentals, life cycle, and benefits of TDD
  • Explore the tools and frameworks to effectively use TDD
  • Develop models and controllers driven by tests
  • Construct the network layer using stubs
  • Use functional tests to ensure the app works as planned
  • Automate and streamline the building, analysing, testing, and archiving of your iOS apps

In Detail

Test-driven development (TDD) is a proven way to find software bugs early. Writing tests before your code improves the structure and maintainability of your app.

Test-driven iOS Development with Swift will help you understand the process of TDD and how it impacts your applications written in Swift. Through practical, real-world examples, you’ll start seeing how to implement TDD in context. We will begin with an overview of your TDD workflow and then deep-dive into unit testing concepts and code cycles. We will showcase the workings of functional tests, which will help you improve the user interface. Finally, you will learn about automating deployments and continuous integration to run an environment.

Style and approach

This is an easy-to-follow example-driven tutorial, packed with lots of tips and tricks that explore TDD bit-by-bit in the process of making an iOS application.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. Test-Driven iOS Development with Swift
    1. Table of Contents
    2. Test-Driven iOS Development with Swift
    3. Credits
    4. About the Author
    5. About the Reviewer
    6. www.PacktPub.com
      1. Support files, eBooks, discount offers, and more
        1. Why subscribe?
        2. Free access for Packt account holders
    7. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Conventions
      5. Reader feedback
      6. Customer support
        1. Downloading the example code
        2. Downloading the color images of this book
        3. Errata
        4. Piracy
        5. Questions
    8. 1. Your First Unit Tests
      1. Building your first automatic unit test
        1. What are unit tests?
        2. Implementing a unit test example
        3. Important built-in assert functions
      2. Understanding TDD
        1. The TDD workflow – red, green, and refactor
          1. Red
          2. Green
          3. Refactor
      3. TDD in Xcode
        1. An example of TDD
          1. Red – example 1
          2. Green – example 1
          3. Refactor – example 1
          4. Red – example 2
          5. Green – example 2
          6. Refactor – example 2
          7. A recap
        2. Finding information about tests in Xcode
          1. Test Navigator
          2. Tests overview
          3. Running tests
            1. Running one specific test
            2. Running all tests in a test case
            3. Running a group of tests
          4. The setUp() and tearDown() methods
          5. Debugging tests
          6. Breakpoint that breaks on test failure
          7. Test again feature
      4. Advantages of TDD
      5. Disadvantages of TDD
      6. What to test
      7. Summary
    9. 2. Planning and Structuring Your Test-Driven iOS App
      1. Task list view
      2. Task detail view
      3. Task input view
      4. Structure of the app
        1. The Table View Controller, the delegate and the data source
        2. Table view cells
        3. A model
        4. Other view controllers
        5. Development strategy
      5. Getting started with Xcode
      6. Setting useful Xcode behaviors for testing
        1. Useful build behaviors
        2. Testing behaviors
      7. Summary
    10. 3. A Test-Driven Data Model
      1. Implementing the ToDoItem struct
        1. Adding a title property
        2. Adding an itemDescription property
        3. Removing a hidden source of bugs
        4. Adding a timestamp property
        5. Adding a location property
      2. Implementing the Location struct
        1. Adding a coordinate property
      3. Implementing the ItemManager class
        1. Count
        2. Adding and checking items
        3. Equatable
        4. Removing all items
        5. Ensuring uniqueness
      4. Summary
    11. 4. A Test-Driven View Controller
      1. Implementing ItemListViewController
      2. Implementing ItemListDataProvider
        1. Conducting the first tests
        2. Fake objects
        3. Using mocks
        4. Checking and unchecking items
        5. Implementing ItemCell
      3. Implementing DetailViewController
      4. Implementing InputViewController
      5. Summary
    12. 5. Testing Network Code
      1. Implementing asynchronous tests
      2. Implementing a login request to a web service
      3. Handling errors
      4. Summary
    13. 6. Putting It All Together
      1. Connecting parts
        1. The initial View Controller
        2. Showing the input view
        3. Showing the detail view
      2. Serialization and deserialization
      3. Functional tests
        1. Adding a UI test target
        2. Recording and testing
      4. Summary
    14. 7. Code Coverage and Continuous Integration
      1. Enabling code coverage
        1. Code coverage in Xcode
        2. What code coverage is enough?
      2. Continuous integration
        1. Installing and setting up Xcode Server
        2. Adding bots
      3. Automatic deployment with fastlane
        1. Installing fastlane
        2. Setting up
      4. Summary
    15. 8. Where to Go from Here
      1. What we have learned so far
      2. Integration tests
      3. UI tests
      4. Behavior-Driven Development
      5. TDD in existing projects
      6. More information about TDD
      7. Summary
    16. Index