Implementing Agile Test-Driven Development for Java Developers

Live Classroom
Duration: 3 days
Live Virtual Classroom
Duration: 3 days
Pattern figure


This three-day course combines engaging lectures, demos, group activities and discussions with machine-based practical programming labs and exercises. Participants will work within a dynamic, learning environment wherein they will experience Test-Driven Development (TDD) first hand. Participants will explore concepts such as development agility and Agile Manifesto to evaluate various development methods with a structured organizational approach.

What You'll Learn

  • Introduction to the concept of development agility and the Agile Manifesto
  • Review each of the major agile development methods underscoring their strengths and weaknesses
  • Understand how to manage an agile environment even within a structured organizational approach
  • Learn how to introduce agility into a development organization
  • Examine what unit testing is and how various xUnit frameworks facilitate unit testing
  • Review and work with the xUnit family of unit testing tools
  • Understand the concepts of and motivations for Test-Driven Development
  • Relate unit testing, test driven development, and test coverage to agile processes
  • Understand the importance of refactoring in supporting agile and test-driven processes
  • Work with both refactoring techniques and tools
  • Work with Mock objects to understand what problems they solve and how they accomplish that
  • Understand what Continuous Integration is and what the components of CI are
  • Examine the motivations for CI
  • Review best practices for everything from CI to testing within the context of agile development


  • Agile rationale and concepts
    • Reducing risk through agility
    • The discipline of Timeboxing
    • Incremental delivery and evaluation
    • Agile method: Scrum
    • Agile method: XP
    • Pair programming
  • The Agile approach
    • Agile software development manifesto
    • The Agile principles
    • Identifying features
    • Managing features
    • Communication dynamics
  • Agile iterative development
    • Iterative approaches
    • Phased iterative development
    • Iterating
    • Feasibility & planning
    • Development
    • Adaptation & deployment
  • Prioritizing and planning
    • Features and backlogs
    • FDD process
    • Prioritizing features
    • Release planning
    • Assigning features to iterations
  • Building
    • Typical Continuous Integration process
    • CI server
    • Automate source code management
    • Automate build process
    • Automate testing
    • Automate deployment

  • JUnit overview
    • Purpose of unit testing
    • Good unit tests
    • Test stages
    • Unit testing Vs Integration testing
  • Jumpstart: JUnit 4.x
    • JUnit overview
    • How JUnit works
    • Launching tests
    • Test suites
    • JUnit test fixture
  • @Test annotation
    • Test execution cycle
    • Checking for exceptions
    • Using Timeouts
  • Hamcrest
    • About Hamcrest
    • The Hamcrest Matcher Framework
    • Hamcrest Matchers
  • Parameterized tests
    • Injecting the parameters
    • Setting the parameters
    • Test execution cycle
    • Observations
  • Theories
    • Writing theory enabled tests
    • Defining DataPoints
    • Defining theories
    • Observations
  • JUnit best practices
    • “Good” tests
    • Bad smells
    • White-Box unit testing
    • Black-Box unit testing
    • Automation and coverage

  • Transitioning to Agility
    • Agility: Some process, Some mindset
    • Characteristics that enable Agility
    • Characteristics that inhibit Agility
    • Risks associated with migrating
    • Smoothing the transition
  • The bottom line
    • Agile migration patterns
    • Extending the migration
    • Coding practices
    • Source control
    • Pair programming and code reviews
    • Continuous Integration
    • Legacy code
Ripple wave

Who should attend

This course is highly recommended for:

  • Java and JavaScript software engineers
  • Java Quant engineers
  • Software developers
  • Lead software engineers


Participants must have a working knowledge of Java.  Knowledge of current development processes, such as structured top-down development and the waterfall method is beneficial. Participants should have also skills equivalent to or should have taken the the courses Understanding the Agile Process – A Technical Overview and Mastering Java for OO Developers.

Interested in this Course?

    Ready to recode your DNA for GenAI?
    Discover how Cognixia can help.

    Get in Touch
    Pattern figure
    Ripple wave