𝔖 Scriptorium
✦   LIBER   ✦

πŸ“

Test-Driven iOS Development with Swift: Write maintainable, flexible, and extensible code using the power of TDD with Swift 5.5

✍ Scribed by Dr. Dominik Hauser


Publisher
Packt Publishing
Year
2022
Tongue
English
Leaves
280
Edition
4
Category
Library

⬇  Acquire This Volume

No coin nor oath required. For personal study only.

✦ Synopsis


Build robust applications using TDD with Swift 5.5 and become a TDD expert by writing tests for view controller, views, network code, and even SwiftUI view

Key Features

  • Build a complete iOS app using test-driven development
  • Explore testing view controllers, table views, navigation, and network code
  • Learn how to write tests for Combine and SwiftUI code

Book Description

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.

What you will learn

  • Implement TDD in Swift application development
  • Detect bugs before you run code using the TDD approach
  • Use TDD to build models, view controllers, and views
  • Test network code with asynchronous tests and stubs
  • Write code that's a joy to read and maintain
  • Design functional tests to suit your software requirements
  • Discover scenarios where TDD should be applied and avoided

Who this book is for

This book is for iOS developers looking to apply TDD to build maintainable and scalable applications. Intermediate-level developers with Swift application development experience will be able to make the most out of this book. Prior experience of applying TDD to Swift applications is not required.

Table of Contents

  1. Your First Unit Tests
  2. Understanding Test-Driven Development
  3. Test-Driven Development in Xcode
  4. The App We Are Going to Build
  5. Building a Structure for ToDo Items
  6. Testing, Loading, and Saving Data
  7. Building a Table View Controller for the To-Do Items
  8. Building a Simple Detail View
  9. Test-Driven Input View in SwiftUI
  10. Testing Networking Code
  11. Easy Navigation with Coordinators

✦ Table of Contents


Cover
Title Page
Copyright and Credits
Contributors
Table of Contents
Preface
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 app's 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
Index
Other Books You May Enjoy


πŸ“œ SIMILAR VOLUMES


Test-Driven iOS Development with Swift:
✍ Dr. Dominik Hauser πŸ“‚ Library πŸ“… 2022 πŸ› Packt Publishing 🌐 English

<p><span>Build robust applications using TDD with Swift 5.5 and become a TDD expert by writing tests for view controller, views, network code, and even SwiftUI view</span></p><h4><span>Key Features</span></h4><ul><li><span><span>Build a complete iOS app using test-driven development</span></span></l

Test-driven iOS development with Swift 4
✍ Hauser, Dominik πŸ“‚ Library πŸ“… 2017 πŸ› Packt Publishing 🌐 English

<p><b>Use test-driven approach to develop highly-functional iOS apps with Swift 4 and Xcode 9</b><p><b>About This Book</b><p><li>A practical guide to writing effective, organized, and clean code that works well<li>Learn test-driven principles to help you build better-designed apps with fewer bugs<li

iOS Code Testing: Test-Driven Developmen
✍ Abhishek Mishra πŸ“‚ Library πŸ“… 2017 πŸ› Apress 🌐 English

Put into motion practical examples to master Test-Driven Development (TDD) and acceptance testing in Swift. This book uses a pragmatic approach to writing well-tested code and provides techniques that can be used to retrofit tests to legacy code bases. You'll be introduced to basic principles of

Test-driven iOS development with Swift 3
✍ Hauser, Dominik πŸ“‚ Library πŸ“… 2016 πŸ› Packt Publishing 🌐 English

<p><b>Write testable and maintainable code to develop highly-functional iOS apps</b><p><b>About This Book</b><p><li>Learn test-driven principles to help you build apps with fewer bugs and better designs<li>Become more efficient while working with Swift to move on to your next project faster!<li>Impl