Cargando…

Modularizing legacy projects using TDD : test-driven development with XCTest for IOS /

Improve current or new projects with top notch testability and maintainability. Writing tests improves the design of your apps, as it pushes you to have a more modularized design. This in turn improves the maintainability and sustainability of your apps. This book is for iOS developers who already k...

Descripción completa

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autor principal: El-Morabea, Khaled
Otros Autores: El-Garem, Hassaan
Formato: Electrónico eBook
Idioma:Inglés
Publicado: Berkeley, CA : Apress L.P., 2021.
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)
Tabla de Contenidos:
  • Intro
  • Table of Contents
  • About the Authors
  • About the Technical Reviewer
  • Acknowledgments
  • Chapter 1: TDD Basics
  • Types of Testing
  • Trouble with Automated Testing
  • TDD in a Nutshell
  • Why Use TDD?
  • External and Internal Quality
  • When to Use TDD?
  • When Not to Use TDD?
  • Refactoring
  • Modularization
  • Test Structure
  • Let's TDD
  • Maximum Out of TDD
  • Exercise
  • Summary
  • Chapter 2: Unit Tests
  • Your First Test
  • What Do We Want to Test?
  • Creating a Unit Test Target
  • Adding a Test Case Class
  • Assert Methods
  • Assert Method Types
  • Truthfulness Asserts
  • Equality Asserts
  • Nullability Asserts
  • Comparison Asserts
  • Errors Asserts
  • Expectations
  • Expectation Types
  • Test Ordering
  • Randomized Ordering
  • Code Coverage
  • Exercise
  • Summary
  • Chapter 3: UI Tests
  • Your First Test
  • XCUITest Components
  • Our Chapter Goal
  • First Test Case
  • Launching the App
  • Querying the UI
  • Relationships
  • Interacting with the UI
  • UI Events
  • Assertions
  • Value Assertion
  • Accessibility
  • Accessibility Tips
  • Putting It All Together
  • Improve UI Tests
  • Exercise
  • Summary
  • Chapter 4: Testing Pyramid
  • Our App
  • UI Tests
  • Integration Tests
  • Unit Tests
  • Summary
  • Chapter 5: TDD Deep Dive
  • CoffeePot
  • Eye on the Big Picture
  • Requirements
  • Testing Pyramid
  • First Story
  • Architecture
  • MVP
  • First Integration Test
  • Unit Tests
  • CoffeeDrinksDataSource
  • CoffeeDrinksModelTests
  • CoffeeDrinksPresenterTests
  • Test Health Check
  • Second Story
  • Architecture
  • Exercise
  • Summary
  • Chapter 6: Modularization for the Win
  • Why Bother with Modularization?
  • What Is a Module?
  • Modularizing Your App
  • Introducing Books
  • Modularization Process
  • Initial Module Map
  • Choose a Class as a Starting Point
  • Identify the Class's Responsibilities
  • Refactor Responsibilities
  • Verification Tests
  • Refactoring
  • Integration Test
  • NetworkLayer
  • MainViewModel
  • MainViewPresenter
  • Last Touches
  • Test Value
  • Rerun Verification Tests
  • Refactor the Rest of the Responsibilities
  • Next Starting Point
  • Exercise
  • Summary
  • Chapter 7: Dependency Injection and Mocks
  • Stubbing
  • Mocking
  • Test Doubles Creation
  • Creation Using Inheritance
  • Creation Using Protocols
  • Dependency Injection
  • Initializer Injection
  • Property Injection
  • Stubbing the Network in UI Tests
  • Summary
  • Chapter 8: Avoiding Multithreading Nightmares
  • What Is Concurrency?
  • GCD
  • Queues
  • Serial vs. Concurrent
  • Sync vs. Async
  • Cost of Concurrency
  • Reader-Writer Problem
  • Singleton Classes
  • Identifying a Race Condition
  • Applying TDD to the Problem
  • Thread Sanitizer
  • Make It Pass
  • Fixing Threading Issues in Books
  • Applying TDD
  • Summary
  • Chapter 9: Testing Your Network
  • Networking ABCs
  • HTTP Requests
  • HTTP Responses
  • URL
  • Networking in iOS
  • URLSession
  • URLSessionConfiguration
  • URLRequest
  • URLSessionTask