Section 1 : Introduction

Lecture 1 Source Code
Lecture 2 Introduction 00:01:50 Duration

Section 2 : Basics of Unit Testing in Xcode

Lecture 1 Introduction 00:06:55 Duration
Lecture 2 Testing Pyramid 00:03:29 Duration
Lecture 3 The F 00:03:47 Duration
Lecture 4 Test-Driven Development Lifecycle 00:02:36 Duration
Lecture 5 Enable Unit Tests in Xcode Project 00:03:23 Duration
Lecture 6 The Default Unit Test Case Class Explained 00:07:08 Duration
Lecture 7 The addTeardownBlock() 00:02:26 Duration
Lecture 8 Creating a New Test Case Class 00:03:43 Duration
Lecture 9 Ways to Run Unit Test in Xcode 00:04:07 Duration
Lecture 10 The Default Order of Unit Tests
Lecture 11 Unit Test Naming Requirements 00:03:09 Duration
Lecture 12 Ways to Disable or Skip Unit Test 00:04:37 Duration
Lecture 13 Viewing Test Results 00:03:51 Duration
Lecture 14 Code Coverage 00:05:54 Duration
Lecture 15 100% Code Coverage 00:01:21 Duration
Lecture 16 Test Method Code Structure 00:02:10 Duration
Lecture 17 Assertions
Lecture 18 Enabling the Failure Debugger Breakpoint 00:04:29 Duration
Lecture 19 Parallel Distributed Testing on Multiple Simulator Clones 00:03:57 Duration

Section 3 : TDD

Lecture 1 Introduction 00:01:57 Duration
Lecture 2 Test That User First Name is Valid 00:11:24 Duration
Lecture 3 Test for a very short First Name 00:05:33 Duration
Lecture 4 Test for a very long First Name 00:05:06 Duration
Lecture 5 Challenge Apply TDD to Implement Validation of Last Name and Email Address 00:04:00 Duration
Lecture 6 Test if user passwords match 00:03:38 Duration
Lecture 7 Test if user passwords do not match 00:02:56 Duration

Section 4 : Test Code in Isolation

Lecture 1 Introduction
Lecture 2 Dependency Injection 00:02:48 Duration
Lecture 3 Use of Protocols 00:03:41 Duration
Lecture 4 Test Toubles - Fake, Mock, Stub, Dummy 00:03:51 Duration

Section 5 : TDD

Lecture 1 Introduction 00:03:06 Duration
Lecture 2 Create Initial SignupWebServiceTests Unit Test class 00:01:13 Duration
Lecture 3 Create Initial SignupWebService Class 00:02:41 Duration
Lecture 4 Implementing SignupFormRequestModel 00:04:13 Duration
Lecture 5 Adding CompletionHandler to Signup Method Signature 00:01:36 Duration
Lecture 6 Implementing the Initial SignupResponseModel 00:01:23 Duration
Lecture 7 Implementing the Initial SignupErrors Enum 00:01:04 Duration
Lecture 8 Organize Project Folders 00:04:07 Duration
Lecture 9 Assert that the Response Status is Equal to ok
Lecture 10 Adding an Expectation and an Asynchronous Wait Method 00:02:35 Duration
Lecture 11 Inject URL String 00:01:52 Duration
Lecture 12 Prepare URL 00:01:41 Duration
Lecture 13 Prepare URL Request Object 00:02:51 Duration
Lecture 14 Create DataTask 00:02:14 Duration
Lecture 15 Inject URLSession 00:01:00 Duration
Lecture 16 Return Response Model 00:02:03 Duration
Lecture 17 Trying how it works with Real HTTP Request 00:04:33 Duration
Lecture 18 Mock URLProtocol 00:04:20 Duration
Lecture 19 Make URLSession use MockURLProtocol 00:04:39 Duration
Lecture 20 Handle Unknown JSON Response Model 00:07:26 Duration
Lecture 21 When Empty URL Provided Return a Specific Error Message 00:05:42 Duration
Lecture 22 Refactor SignupErrors Enum 00:02:53 Duration
Lecture 23 Test URL Request Failure 00:13:21 Duration
Lecture 24 Check Code Coverage 00:01:59 Duration

Section 6 : TDD

Lecture 1 Introduction 00:06:10 Duration
Lecture 2 Create Presenter Unit Test Class and Test Method 00:01:49 Duration
Lecture 3 Create Signup Form Model Struct 00:02:48 Duration
Lecture 4 Create SignupPresenter class and the processUserSignup() method 00:02:17 Duration
Lecture 5 Create Initial MockSignupModelValidator class 00:03:08 Duration
Lecture 6 Create Validator Protocol 00:04:45 Duration
Lecture 7 Inject Validator Mock and validate each property 00:06:59 Duration
Lecture 8 Refactor 00:03:16 Duration
Lecture 9 Unit Test to verify the signup() was called 00:03:03 Duration
Lecture 10 Create SignupWebService Mock Class 00:02:40 Duration
Lecture 11 Signup Web Service Protocol 00:02:59 Duration
Lecture 12 Inject Signup Web Service Mock in to Presenter 00:05:11 Duration
Lecture 13 Unit Test to assert that Presenter calls a method on View Delagate 00:01:19 Duration
Lecture 14 Create View Delegate Protocol and MockSignupViewDelegate 00:06:59 Duration
Lecture 15 Inject View Delegate into Presenter 00:05:10 Duration
Lecture 16 Counting number of times a method was called 00:00:55 Duration
Lecture 17 Verify that successfulSignup() called one time only 00:01:25 Duration
Lecture 18 Refactor 00:00:55 Duration
Lecture 19 Coding Challenge 00:02:14 Duration
Lecture 20 Assert that Presenter calls a Error Handler on View Delagate 00:03:42 Duration
Lecture 21 Review Code Coverage of Presenter Class 00:01:50 Duration

Section 7 : Unit Testing View Controller

Lecture 1 Introduction 00:03:34 Duration
Lecture 2 Create a New Test Class and a Test Method 00:05:29 Duration
Lecture 3 Test UITextFields are initially empty 00:05:24 Duration
Lecture 4 Test UITextField has a referencing outlet 00:06:38 Duration
Lecture 5 Test UIButton has @IBAction assigned to it 00:09:16 Duration
Lecture 6 Test UIButton Action invokes code in Presenter 00:03:47 Duration
Lecture 7 Create MockSignupPresenter class 00:05:11 Duration
Lecture 8 Inject MockSignupPresenter into View Controller 00:08:19 Duration

Section 8 : Testing Old or Legacy Code

Lecture 1 Introduction 00:01:29 Duration
Lecture 2 Refactor Massive View Controllers 00:02:40 Duration
Lecture 3 Use Protocols and Dependency Injection 00:05:45 Duration
Lecture 4 Adding code to existing methods 00:03:27 Duration
Lecture 5 Break large functions into smaller ones
Lecture 6 Wrapping existing classes 00:04:49 Duration

Section 9 : Examples Ways to Load UIViewController in a Unit Test

Lecture 1 Loading UIViewController that uses a Storyboard 00:03:46 Duration
Lecture 2 Loading UIViewController that uses XIB 00:02:36 Duration
Lecture 3 UIViewController that creates Views programmatically 00:03:12 Duration

Section 10 : Examples Testing methods that throw Error

Lecture 1 XCTAssertThrowsError example 00:06:55 Duration
Lecture 2 XCTAssertNoThrow example 00:02:33 Duration
Lecture 3 An example of Do Try and Catch instead of XCTAssertThrowsError 00:04:00 Duration
Lecture 4 An example of Do Try and Catch instead of XCTAssertNoThrow 00:01:47 Duration

Section 11 : Examples Unit Test UITextField Attributes

Lecture 1 Overview of UITextField Attributes Content Type, Keyboard Type, Placeholer 00:06:41 Duration
Lecture 2 Test that UITextField has the Email Address UITextContentType set 00:05:06 Duration
Lecture 3 Test that UITextField has Email Address keyboard type set 00:02:54 Duration
Lecture 4 Test that Password UITextField is a Secure Text Entry 00:02:36 Duration

Section 12 : Examples Testing Navigation

Lecture 1 Project overview 00:02:21 Duration
Lecture 2 Push UIViewController into UINavigationController 00:07:32 Duration
Lecture 3 Test Push Navigation 00:03:17 Duration
Lecture 4 Test Push Navigation with Spy class 00:05:43 Duration

Section 13 : UI Testing

Lecture 1 Introduction 00:05:48 Duration
Lecture 2 Accessing UI Elements 00:06:09 Duration
Lecture 3 Add UI Tests target to a project 00:02:03 Duration
Lecture 4 Create a new UI Test case class 00:02:21 Duration
Lecture 5 Recording UI Tests 00:02:45 Duration
Lecture 6 Recording UI Tests 00:04:44 Duration
Lecture 7 Testing with UITextField placeholders 00:02:41 Duration
Lecture 8 Test Assertions to check if UITextFields are enabled 00:05:10 Duration
Lecture 9 Adding accessibility identifiers to UITextFields 00:04:04 Duration
Lecture 10 Finding UI elements 00:02:26 Duration
Lecture 11 A Test method to assert that an error alert is presented 00:04:58 Duration
Lecture 12 Making UIViewController display UIAlertController 00:06:01 Duration
Lecture 13 Refactor 00:02:42 Duration
Lecture 14 Test for Success Alert Dialog 00:05:29 Duration
Lecture 15 Wait for View Controller to appear 00:07:02 Duration
Lecture 16 XCUIElement Actions and Gestures 00:03:05 Duration

Section 14 : UI Testing

Lecture 1 Introduction 00:01:35 Duration
Lecture 2 Generating and Previewing Screenshots 00:02:43 Duration
Lecture 3 Enabling and Disabling Automatic Screenshots 00:01:37 Duration
Lecture 4 Taking Screenshot of Specific UI Element 00:04:07 Duration
Lecture 5 Take a Screenshot of Current Device Screen 00:02:47 Duration

Section 15 : UI Testing

Lecture 1 Introduction 00:04:55 Duration
Lecture 2 Passing and Reading Launch Arguments 00:03:59 Duration
Lecture 3 Passing and Reading Launch Environment Values 00:04:29 Duration

Section 16 : UI Testing

Lecture 1 Introduction 00:02:37 Duration
Lecture 2 Creating a new Test plan 00:03:22 Duration
Lecture 3 Creating new test plan configuration 00:04:21 Duration
Lecture 4 A separate Test Plan for UI Tests, Unit Tests and All Tests 00:04:19 Duration
Lecture 5 Localization screenshots demo 00:07:22 Duration