Slide 1

Slide 1 text

TDD using Xcode Playgrounds  Paul Ardeleanu @pardel

Slide 2

Slide 2 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel Test Driven Development 

Slide 3

Slide 3 text

TDD using Xcode Playgrounds - CodeMobile, April 2017  @pardel TDD according to Wikipedia “Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only. This is opposed to software development that allows software to be added that is not proven to meet requirements.” https://en.wikipedia.org/wiki/Test-driven_development

Slide 4

Slide 4 text

TDD using Xcode Playgrounds - CodeMobile, April 2017  @pardel Pick a feature to implement making sure it’s a small enough unit. FEATURE Change any of the existing code making sure ALL tests are passing. REFACTOR Write a failing test. Stop as soon as you get a failure. RED Write code to pass the test. Write as little code as possible. GREEN L ( ) TDD lifecycle Feature, Red, Green, Refactor

Slide 5

Slide 5 text

TDD using Xcode Playgrounds - CodeMobile, April 2017  @pardel New feature create test enough code to make it pass successful test execution No anything to refactor Yes Yes refactoring No Ya Ain’t Gonna Need It TDD lifecycle Feature, Red, Green, Refactor

Slide 6

Slide 6 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel Testing in iOS 

Slide 7

Slide 7 text

TDD using Xcode Playgrounds - CodeMobile, April 2017  @pardel Testing in iOS XCTest - Xcode 5

Slide 8

Slide 8 text

TDD using Xcode Playgrounds - CodeMobile, April 2017  @pardel Testing in iOS XCTest - Xcode 5

Slide 9

Slide 9 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel Playgrounds 

Slide 10

Slide 10 text

import XCTest class TaskTests: XCTestCase { func testCanCreateATask() { } }

Slide 11

Slide 11 text

import XCTest class TaskTests: XCTestCase { func testCanCreateATask() { XCTAssertNotNil(Task()) } }

Slide 12

Slide 12 text

import XCTest class Task { } class TaskTests: XCTestCase { func testCanCreateATask() { XCTAssertNotNil(Task()) } }

Slide 13

Slide 13 text

import XCTest class Task { } class TaskTests: XCTestCase { func testCanCreateATask() { XCTAssertNotNil(Task()) } } TaskTests.defaultTestSuite().run()

Slide 14

Slide 14 text

import XCTest class Task { ... } class TaskTests: XCTestCase { ... } TaskTests.defaultTestSuite().run() class TaskManager { ... } class TaskManagerTests: XCTestCase { ... } TaskManagerTests.defaultTestSuite().run() Test Suite 'TaskTests' started at 2017-04-19 11:00:38.804 Test Case '-[__lldb_expr_5.TaskTests testTaskHasAName]' started. Test Case '-[__lldb_expr_5.TaskTests testTaskHasAName]' passed (0.041 seconds). Test Case '-[__lldb_expr_5.TaskTests testTaskMustHaveAName]' started. Test Case '-[__lldb_expr_5.TaskTests testTaskMustHaveAName]' passed (0.005 seconds). Test Suite 'TaskTests' passed at 2017-04-19 11:00:38.851. Executed 2 tests, with 0 failures (0 unexpected) in 0.046 (0.048) seconds Test Suite 'TaskManagerTests' started at 2017-04-19 11:00:38.851 Test Case '-[__lldb_expr_5.TaskManagerTests testCanAddTask]' started. Test Case '-[__lldb_expr_5.TaskManagerTests testCanAddTask]' passed (0.010 seconds). Test Case '-[__lldb_expr_5.TaskManagerTests testHasTasks]' started. Test Case '-[__lldb_expr_5.TaskManagerTests testHasTasks]' passed (0.001 seconds). Test Suite 'TaskManagerTests' passed at 2017-04-19 11:00:38.862. Executed 2 tests, with 0 failures (0 unexpected) in 0.011 (0.011) seconds

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel Unit tests 

Slide 17

Slide 17 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel

Slide 18

Slide 18 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel  m.pardel.net

Slide 19

Slide 19 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel leanpub.com/test-gtfo

Slide 20

Slide 20 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel

Slide 21

Slide 21 text

TDD using Xcode Playgrounds - CodeMobile, April 2017 @pardel Thank you! [email protected]