iOS Unit Testing by Example

· The Pragmatic Programmers LLC
āŠ‡-āŠŠāŦāŠļāŦāŠĪāŠ•
358
āŠŠāŦ‡āМ
āŠŠāŠūāŠĪāŦāа

āŠ† āŠ‡-āŠŠāŦāŠļāŦāŠĪāŠ• āŠĩāŠŋāŠķāŦ‡

Fearlessly change the design of your iOS code with solid unit tests. Use Xcode's built-in test framework XCTest and Swift to get rapid feedback on all your code - including legacy code. Learn the tricks and techniques of testing all iOS code, especially view controllers (UIViewControllers), which are critical to iOS apps. Learn to isolate and replace dependencies in legacy code written without tests. Practice safe refactoring that makes these tests possible, and watch all your changes get verified quickly and automatically. Make even the boldest code changes with complete confidence.

Manual code and UI testing get slower the deeper your navigation hierarchy goes. It can take several taps just to reach a particular screen, never mind the actual workflow tests. Automatic unit testing offers such rapid feedback that it can change the rules of development. Bring testing to iOS development, even for legacy code. Use XCTest to write unit tests in Swift for all your code.

iOS developers typically reserve unit tests for their model classes alone. But that approach skips most of the code common to iOS apps, especially with UIViewControllers. Learn how to unit test these view controllers to expand your unit testing possibilities. Since good unit tests form the bedrock for safe refactoring, you're empowered to make bold changes. Learn how to avoid the most common mistakes Swift programmers make with the XCTest framework. Use code coverage to find holes in your test suites. Learn how to identify hard dependencies.

Reshape the design of your code quickly, with less risk and less fear.

āŠēāŦ‡āŠ–āŠ• āŠĩāŠŋāŠķāŦ‡

Jon Reid is a leading expert in unit testing and Test-Driven Development for iOS development. He has been practicing TDD on Apple platforms since 2001. His blog, https://qualitycoding.org focuses on iOS unit testing practices.

āŠ† āŠ‡-āŠŠāŦāŠļāŦāŠĪāŠ•āŠĻāŦ‡ āŠ°āŦ‡āПāŠŋāŠ‚āŠ— āŠ†āŠŠāŦ‹

āŠĪāŠŪāŦ‡ āŠķāŦāŠ‚ āŠĩāŠŋāŠšāŠūāŠ°āŦ‹ āŠ›āŦ‹ āŠ…āŠŪāŠĻāŦ‡ āŠœāŠĢāŠūāŠĩāŦ‹.

āŠŪāŠūāŠđāŠŋāŠĪāŦ€ āŠĩāŠūāŠ‚āŠšāŠĩāŦ€

āŠļāŦāŠŪāŠūāŠ°āŦāПāŠŦāŦ‹āŠĻ āŠ…āŠĻāŦ‡ āŠŸāŦ…āŠŽāŦāŠēāŦ‡āП
Android āŠ…āŠĻāŦ‡ iPad/iPhone āŠŪāŠūāŠŸāŦ‡ Google Play Books āŠāŠŠ āŠ‡āŠĻāŦāŠļāŦāПāŦ‰āŠē āŠ•āŠ°āŦ‹. āŠĪāŦ‡ āŠĪāŠŪāŠūāŠ°āŠū āŠāŠ•āŠūāŠ‰āŠĻāŦāП āŠļāŠūāŠĨāŦ‡ āŠ‘āŠŸāŦ‹āŠŪāŦ…āПāŠŋāŠ• āŠ°āŦ€āŠĪāŦ‡ āŠļāŠŋāŠ‚āŠ• āŠĨāŠūāŠŊ āŠ›āŦ‡ āŠ…āŠĻāŦ‡ āŠĪāŠŪāŠĻāŦ‡ āŠœāŦāŠŊāŠūāŠ‚ āŠŠāŠĢ āŠđāŦ‹ āŠĪāŦāŠŊāŠūāŠ‚ āŠĪāŠŪāŠĻāŦ‡ āŠ‘āŠĻāŠēāŠūāŠ‡āŠĻ āŠ…āŠĨāŠĩāŠū āŠ‘āŠŦāŠēāŠūāŠ‡āŠĻ āŠĩāŠūāŠ‚āŠšāŠĩāŠūāŠĻāŦ€ āŠŪāŠ‚āŠœāŦ‚āаāŦ€ āŠ†āŠŠāŦ‡ āŠ›āŦ‡.
āŠēāŦ…āŠŠāŠŸāŦ‰āŠŠ āŠ…āŠĻāŦ‡ āŠ•āŠŪāŦāŠŠāŦāŠŊāŦāŠŸāŠ°
Google Play āŠŠāŠ° āŠ–āŠ°āŦ€āŠĶāŦ‡āŠē āŠ‘āŠĄāŠŋāŠ“āŠŽāŦāŠ•āŠĻāŦ‡ āŠĪāŠŪāŦ‡ āŠĪāŠŪāŠūāŠ°āŠū āŠ•āŠŪāŦāŠŠāŦāŠŊāŦāŠŸāŠ°āŠĻāŠū āŠĩāŦ‡āŠŽ āŠŽāŦāаāŠūāŠ‰āŠāŠ°āŠĻāŦ‹ āŠ‰āŠŠāŠŊāŦ‹āŠ— āŠ•āŠ°āŦ€āŠĻāŦ‡ āŠļāŠūāŠ‚āŠ­āŠģāŦ€ āŠķāŠ•āŦ‹ āŠ›āŦ‹.
eReaders āŠ…āŠĻāŦ‡ āŠ…āŠĻāŦāŠŊ āŠĄāŠŋāŠĩāŠūāŠ‡āŠļ
Kobo āŠ‡-āŠ°āŦ€āŠĄāŠ° āŠœāŦ‡āŠĩāŠū āŠ‡-āŠ‡āŠ‚āŠ• āŠĄāŠŋāŠĩāŠūāŠ‡āŠļ āŠŠāŠ° āŠĩāŠūāŠ‚āŠšāŠĩāŠū āŠŪāŠūāŠŸāŦ‡, āŠĪāŠŪāŠūāŠ°āŦ‡ āŠŦāŠūāŠ‡āŠēāŠĻāŦ‡ āŠĄāŠūāŠ‰āŠĻāŠēāŦ‹āŠĄ āŠ•āŠ°āŦ€āŠĻāŦ‡ āŠĪāŠŪāŠūāŠ°āŠū āŠĄāŠŋāŠĩāŠūāŠ‡āŠļ āŠŠāŠ° āŠŸāŦāаāŠūāŠĻāŦāŠļāŠŦāŠ° āŠ•āŠ°āŠĩāŠūāŠĻāŦ€ āŠœāŠ°āŦ‚āа āŠŠāŠĄāŠķāŦ‡. āŠļāŠŠāŦ‹āаāŦāПāŦ‡āŠĄ āŠ‡-āŠ°āŦ€āŠĄāŠ° āŠŠāŠ° āŠŦāŠūāŠ‡āŠēāŦ‹ āŠŸāŦāаāŠūāŠĻāŦāŠļāŦāŠŦāŠ° āŠ•āŠ°āŠĩāŠū āŠŪāŠūāŠŸāŦ‡ āŠļāŠđāŠūāŠŊāŠĪāŠū āŠ•āŦ‡āŠĻāŦāŠĶāŦāаāŠĻāŦ€ āŠĩāŠŋāŠ—āŠĪāŠĩāŠūāŠ° āŠļāŦ‚āКāŠĻāŠūāŠ“ āŠ…āŠĻāŦāŠļāŠ°āŦ‹.