Introduction to Test-Driven Development (TDD)
  • Download Source Code
  • Join .NET Community of Students
  • Outline
  • Why we Need TDD?
  • What is TDD?
  • Red / Green / Refactor
  • Three Laws of TDD
  • Changing Requirements and the Safety Net
  • F.I.R.S.T.
  • Code Coverage
  • Different Types of Tests and TDD
  • Testing Frameworks and Tools
  • When TDD Fails?
  • Conclusion
TDD in Action
  • Outline
  • Regular Agile Process in 200 Words
  • VS and R# Shortcuts
  • Refactoring Commands Built-In VS 2017
  • Fibonacci Numbers
  • Three Main TDD Techniques
  • Grabbing the Gold
  • FizzBuzz
  • Reading Roman Numerals
  • Updateable Spin
  • Continuous Testing
  • Tic-Tac-Toe (Crosses and Noughts)
  • Assert First
  • Demo - Sticks
  • Conclusion
Katas and TDD
  • Outline
  • Stack Kata
  • Immutable Stack Kata
  • LinkedList Kata
  • Conclusion
Writing Test Doubles (Mocks)
  • Outline
  • Problem Demo
  • Refactoring to Make Code Testable
  • Test Doubles
  • Writing Tests with Hand-Rolled Mocks
  • Problems with Hand-Rolled Mocks
  • Mocking Frameworks
  • Writing Tests with a Mocking Framework
  • NSubstitute. Key Features
  • Classic School vs London School
  • Conclusion
Acceptance and Integration Tests (UI-Tests)
  • Outline
  • What is an Acceptance Test?
  • Overview of SpecFlow
  • Gherkin. Features and Scenarios
  • Basics of SpecFlow
  • Integration and UI-Testing
  • UI-Automation Testing Framework
  • TestStack.White Overview
  • Conclusion
Implementing a WPF App by TDD
  • Outline
  • Application Overview
  • Writing Acceptance Tests
  • Building a Bridge to User Interface Applying the Page Object Design Pattern
  • Implementing Acceptance Tests
  • Implementing ViewModels using TDD. Part 1.
  • Implementing ViewModels using TDD. Part 2.
  • Conclusion
Thoughts on TDD
  • Outline
  • What is TDD in the End? Life without TDD
  • Agile and TDD
  • TDD and Design Upfront
  • Do Unit Tests Guarantee the Success?
  • Having no Tests is Better than Having Bad Tests
  • Architecture and Design
  • Conclusion
Best Practices
  • Outline
  • Ending the TDD Day
  • Pair Programming and Ping-Pong Programming
  • Quality of Tests
  • Test Data
  • Shouldly
  • Prefer Positive if-Statements
  • Testing Trivial Code
  • Test Single Concern
  • Singletons and Static Classes
  • Builder Design Pattern. Immutability and Testability
  • Conclusion
  • BONUS Lecture