Helion


Szczegóły ebooka

Test-Driven iOS Development with Swift - Fourth Edition

Test-Driven iOS Development with Swift - Fourth Edition


Test-driven development (TDD) is a proven way to find software bugs earlier on in software development. Writing tests before you code improves the structure and maintainability of your apps, and so using TDD in combination with Swift 5.5's improved syntax leaves you with no excuse for writing bad code.

Developers working with iOS will be able to put their knowledge to work with this practical guide to TDD in iOS. This book will help you grasp the fundamentals and show you how to run TDD with Xcode. You'll learn how to test network code, navigate between different parts of the app, run asynchronous tests, and much more. Using practical, real-world examples, you'll begin with an overview of the TDD workflow and get to grips with unit testing concepts and code cycles. You'll then develop an entire iOS app using TDD while exploring different strategies for writing tests for models, view controllers, and networking code. Additionally, you'll explore how to test the user interface and business logic of iOS apps and even write tests for the network layer of the sample app.

By the end of this TDD book, you'll be able to implement TDD methodologies comfortably in your day-to-day development for building scalable and robust applications.

  • Fourth Edition
  • Test-Driven iOS Development with Swift
  • Fourth Edition
  • Contributors
  • About the author
  • About the reviewers
  • Preface
    • Who this book is for
    • What this book covers
    • To get the most out of this book
    • Download the example code files
    • Download the color images
    • Conventions used
    • Get in touch
    • Share Your Thoughts
  • Section 1 The Basics of Test-Driven iOS Development
  • Chapter 1: Your First Unit Tests
    • Technical requirements
    • Building your first automatic unit test
      • What are unit tests?
      • Implementing a unit test example
      • Disabling slow UI tests
    • Assert functions in the XCTest framework
      • Custom assert functions
    • Understanding the difference from other kinds of tests
      • Integration tests
      • UI tests
      • Snapshot tests
      • Manual tests
    • Summary
    • Exercises
  • Chapter 2: Understanding Test-Driven Development
    • The origin of TDD
    • The TDD workflow red, green, refactor
      • Red
      • Green
      • Refactor
    • The advantages of TDD
    • The disadvantages of TDD
    • What to test
    • Summary
  • Chapter 3: Test-Driven Development in Xcode
    • Technical requirements
    • An example of TDD
      • Capitalize headline red
      • Capitalize headline green
      • Capitalize headline refactor
      • Capitalize headline 2 red
      • Capitalize headline 2 green
      • Capitalize headline 2 refactor
      • A recap
    • Finding information about tests in Xcode
      • Test navigator
      • Test overview
    • Running tests
      • Running one specific test
      • Running all tests in a test case
      • Running a group of tests
    • Setting up and tearing down
    • Debugging tests
      • A breakpoint that breaks on test failure
      • The test again feature
    • Summary
    • Exercises
  • Section 2 The Data Model
  • Chapter 4: The App We Are Going to Build
    • Technical requirements
    • A list of to-do items
    • A view for the details of a to-do item
    • A view to add to-do items
    • The structure of the app
      • The table view controller, the delegate, and the data source
      • Table view cells
      • The model
      • Other views
      • The development strategy
    • Getting started in Xcode
      • Setting up useful Xcode behaviors for testing
      • Useful build behaviors
      • Testing behaviors
    • Summary
    • Exercises
  • Chapter 5: Building a Structure for ToDo Items
    • Technical requirements
    • Implementing the ToDoItem struct
      • Adding a title property
      • Adding an itemDescription property
      • Removing a hidden source of bugs
      • Adding a timestamp property
      • Dealing with optional values in unit tests
      • Adding a location property
    • Implementing the Location struct
      • Adding a coordinate property
    • Summary
    • Exercises
  • Chapter 6: Testing, Loading, and Saving Data
    • Technical requirements
    • Publishing changes with Combine
      • Testing asynchronous Combine code
      • Making ToDoItem equatable
    • Checking items
    • Storing and loading ToDoItems
      • Implementing storing and loading
      • Cleaning up the code
    • Summary
    • Exercises
  • Section 3 Views and View Controllers
  • Chapter 7: Building a Table View Controller for the To-Do Items
    • Technical requirements
    • Adding the table view for the to-do items
    • Testing the data source of a table view
      • Adding a test double
      • Using test doubles to implement a number of rows
      • Using test doubles to implement setting up the to-do item cell
    • Refactoring to a diffable data source
    • Presenting two sections
    • Implementing the delegate of a table view
    • Summary
    • Exercises
  • Chapter 8: Building a Simple Detail View
    • Technical requirements
    • Adding labels, a button, and a map
    • Filling in the data
    • Checking the to-do item
    • Summary
    • Exercises
  • Chapter 9: Test-Driven Input View in SwiftUI
    • Technical requirement
    • Adding the ViewInspector package
    • Using ViewInspector to test a simple view
      • Adding a title text field
      • Adding a DatePicker
      • Improving the test code and the implementation
      • Adding another text field
      • Improving the user interface
      • Adding an address text field and a button
    • Testing button actions with ViewInspector
    • Summary
    • Exercises
  • Section 4 Networking and Navigation
  • Chapter 10: Testing Networking Code
    • Mocking CLGeoCoder
      • Cleaning your project
      • Preparations for the tests
      • Creating the first test
    • Testing async/await code that communicates with URLSession
    • Handling errors
    • Summary
    • Exercises
  • Chapter 11: Easy Navigation with Coordinators
    • Technical requirement
    • Testing the apps setup
    • Navigating to the details
    • Navigating to a modal view
    • Adding missing parts
      • Making the cells visible
      • Dismissing the input view
      • Making the due date visible in the details
      • Fixing the wrong item being selected
      • Fixing the layout of the table view
    • Summary
    • Exercises
    • Why subscribe?
  • Other Books You May Enjoy
    • Packt is searching for authors like you