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
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
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
{ ... } 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