Test Driven Development in Java (TDD)

Course Length: 3 days
  1. Test Driven Development Introduction
    1. Why Adopt TDD
    2. The 5 TDD Steps
    3. The 3 TDD Laws
    4. Benefits of TDD
    5. Non-benefits of TDD
  2. How Do I Adopt TDD?
    1. Infrastructure Changes Required
    2. Adoption Planning
    3. Measuring and Monitoring Adoption
    4. Adjusting to a New Culture
  3. Testing Levels and Continuous Integration
    1. Continuous Delivery Pipelines
    2. Unit Testing
    3. Integration Testing
    4. Continuous Testing
    5. Robustness Testing
    6. Acceptance Testing

  4. Understanding JUnit and Its Capabilities
    1. Creating Unit Tests
    2. Annotations
    3. Parameterized Tests
    4. Fixtures
    5. Integrating JUnit Into Build System

  5. Testing Tools
    1. Installing Dependencies
    2. Jacoco Code Coverage
    3. Configuring IDEs
      1. Eclipse
      2. IntelliJ
    4. Configuring a Build System
    5. Reporting
 Results
    6. Assertion Languages
      1. Hamcrest
      2. AssertJ
  6. Test Doubles and Isolation
    1. Isolating Unit Tests
    2. Stubs
    3. Dummies
    4. Fakes
    5. Mock Objects
    6. Functions
  7. Mock Objects
    1. When and How to Use Mock Objects Effectively
    2. Creating Mocks
    3. Replacing Mock Objects With Live Objects

    4. Choices
      1. EasyMock
      2. Mockito
    5. Avoiding Mocks
  8. Common Testing Problems
    1. Testing Database Connectivity
    2. Testing Web Service Calls
    3. Testing I/O
    4. Testing Random
  9. Testing Legacy Code
    1. What to Do With Legacy Code
    2. Common Approaches for Testing Legacy Code
    3. Exploring Dependencies
    4. Creating Loose Couplings

    5. Patterns
      1. Extract Interface
      2. Parameterize Method
      3. Parameterize Constructor
      4. Sprout Method
      5. Sprout Class
      6. Wrap Method
      7. Wrap Class