Section 1 : Introduction

Lecture 1 Source Code Text
Lecture 2 Introduction 1:50

Section 2 : Basics of Unit Testing in Xcode

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

Section 3 : TDD

Lecture 22 Introduction 1:57
Lecture 23 Test That User First Name is Valid 11:24
Lecture 24 Test for a very short First Name 5:33
Lecture 25 Test for a very long First Name 5:6
Lecture 26 Challenge Apply TDD to Implement Validation of Last Name and Email Address 4:0
Lecture 27 Test if user passwords match 3:38
Lecture 28 Test if user passwords do not match 2:56

Section 4 : Test Code in Isolation

Lecture 29 Introduction
Lecture 30 Dependency Injection 2:48
Lecture 31 Use of Protocols 3:41
Lecture 32 Test Toubles - Fake, Mock, Stub, Dummy 3:51

Section 5 : TDD

Lecture 33 Introduction 3:6
Lecture 34 Create Initial SignupWebServiceTests Unit Test class 1:13
Lecture 35 Create Initial SignupWebService Class 2:41
Lecture 36 Implementing SignupFormRequestModel 4:13
Lecture 37 Adding CompletionHandler to Signup Method Signature 1:36
Lecture 38 Implementing the Initial SignupResponseModel 1:23
Lecture 39 Implementing the Initial SignupErrors Enum 1:4
Lecture 40 Organize Project Folders 4:7
Lecture 41 Assert that the Response Status is Equal to ok
Lecture 42 Adding an Expectation and an Asynchronous Wait Method 2:35
Lecture 43 Inject URL String 1:52
Lecture 44 Prepare URL 1:41
Lecture 45 Prepare URL Request Object 2:51
Lecture 46 Create DataTask 2:14
Lecture 47 Inject URLSession 1:0
Lecture 48 Return Response Model 2:3
Lecture 49 Trying how it works with Real HTTP Request 4:33
Lecture 50 Mock URLProtocol 4:20
Lecture 51 Make URLSession use MockURLProtocol 4:39
Lecture 52 Handle Unknown JSON Response Model 7:26
Lecture 53 When Empty URL Provided Return a Specific Error Message 5:42
Lecture 54 Refactor SignupErrors Enum 2:53
Lecture 55 Test URL Request Failure 13:21
Lecture 56 Check Code Coverage 1:59

Section 6 : TDD

Lecture 57 Introduction 6:10
Lecture 58 Create Presenter Unit Test Class and Test Method 1:49
Lecture 59 Create Signup Form Model Struct 2:48
Lecture 60 Create SignupPresenter class and the processUserSignup() method 2:17
Lecture 61 Create Initial MockSignupModelValidator class 3:8
Lecture 62 Create Validator Protocol 4:45
Lecture 63 Inject Validator Mock and validate each property 6:59
Lecture 64 Refactor 3:16
Lecture 65 Unit Test to verify the signup() was called 3:3
Lecture 66 Create SignupWebService Mock Class 2:40
Lecture 67 Signup Web Service Protocol 2:59
Lecture 68 Inject Signup Web Service Mock in to Presenter 5:11
Lecture 69 Unit Test to assert that Presenter calls a method on View Delagate 1:19
Lecture 70 Create View Delegate Protocol and MockSignupViewDelegate 6:59
Lecture 71 Inject View Delegate into Presenter 5:10
Lecture 72 Counting number of times a method was called 0:55
Lecture 73 Verify that successfulSignup() called one time only 1:25
Lecture 74 Refactor 0:55
Lecture 75 Coding Challenge 2:14
Lecture 76 Assert that Presenter calls a Error Handler on View Delagate 3:42
Lecture 77 Review Code Coverage of Presenter Class 1:50

Section 7 : Unit Testing View Controller

Lecture 78 Introduction 3:34
Lecture 79 Create a New Test Class and a Test Method 5:29
Lecture 80 Test UITextFields are initially empty 5:24
Lecture 81 Test UITextField has a referencing outlet 6:38
Lecture 82 Test UIButton has @IBAction assigned to it 9:16
Lecture 83 Test UIButton Action invokes code in Presenter 3:47
Lecture 84 Create MockSignupPresenter class 5:11
Lecture 85 Inject MockSignupPresenter into View Controller 8:19

Section 8 : Testing Old or Legacy Code

Lecture 86 Introduction 1:29
Lecture 87 Refactor Massive View Controllers 2:40
Lecture 88 Use Protocols and Dependency Injection 5:45
Lecture 89 Adding code to existing methods 3:27
Lecture 90 Break large functions into smaller ones
Lecture 91 Wrapping existing classes 4:49

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

Lecture 92 Loading UIViewController that uses a Storyboard 3:46
Lecture 93 Loading UIViewController that uses XIB 2:36
Lecture 94 UIViewController that creates Views programmatically 3:12

Section 10 : Examples Testing methods that throw Error

Lecture 95 XCTAssertThrowsError example 6:55
Lecture 96 XCTAssertNoThrow example 2:33
Lecture 97 An example of Do Try and Catch instead of XCTAssertThrowsError 4:0
Lecture 98 An example of Do Try and Catch instead of XCTAssertNoThrow 1:47

Section 11 : Examples Unit Test UITextField Attributes

Lecture 99 Overview of UITextField Attributes Content Type, Keyboard Type, Placeholer 6:41
Lecture 100 Test that UITextField has the Email Address UITextContentType set 5:6
Lecture 101 Test that UITextField has Email Address keyboard type set 2:54
Lecture 102 Test that Password UITextField is a Secure Text Entry 2:36

Section 12 : Examples Testing Navigation

Lecture 103 Project overview 2:21
Lecture 104 Push UIViewController into UINavigationController 7:32
Lecture 105 Test Push Navigation 3:17
Lecture 106 Test Push Navigation with Spy class 5:43

Section 13 : UI Testing

Lecture 107 Introduction 5:48
Lecture 108 Accessing UI Elements 6:9
Lecture 109 Add UI Tests target to a project 2:3
Lecture 110 Create a new UI Test case class 2:21
Lecture 111 Recording UI Tests 2:45
Lecture 112 Recording UI Tests 4:44
Lecture 113 Testing with UITextField placeholders 2:41
Lecture 114 Test Assertions to check if UITextFields are enabled 5:10
Lecture 115 Adding accessibility identifiers to UITextFields 4:4
Lecture 116 Finding UI elements 2:26
Lecture 117 A Test method to assert that an error alert is presented 4:58
Lecture 118 Making UIViewController display UIAlertController 6:1
Lecture 119 Refactor 2:42
Lecture 120 Test for Success Alert Dialog 5:29
Lecture 121 Wait for View Controller to appear 7:2
Lecture 122 XCUIElement Actions and Gestures 3:5

Section 14 : UI Testing

Lecture 123 Introduction 1:35
Lecture 124 Generating and Previewing Screenshots 2:43
Lecture 125 Enabling and Disabling Automatic Screenshots 1:37
Lecture 126 Taking Screenshot of Specific UI Element 4:7
Lecture 127 Take a Screenshot of Current Device Screen 2:47

Section 15 : UI Testing

Lecture 128 Introduction 4:55
Lecture 129 Passing and Reading Launch Arguments 3:59
Lecture 130 Passing and Reading Launch Environment Values 4:29

Section 16 : UI Testing

Lecture 131 Introduction 2:37
Lecture 132 Creating a new Test plan 3:22
Lecture 133 Creating new test plan configuration 4:21
Lecture 134 A separate Test Plan for UI Tests, Unit Tests and All Tests 4:19
Lecture 135 Localization screenshots demo 7:22