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...
Clasificación: | Libro Electrónico |
---|---|
Autor principal: | |
Otros Autores: | |
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