Test-Driven Development w języku C#

Zakres szkolenia

W trakcie szkolenie zostaną omówione narzędzia i techniki test-driven development w procesie tworzenia aplikacji w języku C#. Uczestnicy szkolenia zapoznają się z zasadami projektowania oprogramowania obiektowego pod kątem testów - SOLID OOP i techniką wstrzykiwania zależności - DI. Szczególny nacisk położony jest na praktyczne pisanie testów jednostkowych z wykorzystaniem obiektów pozorujących (stub i mock) i organizowanie testów w projekcie. W trakcie szkolenia dokonany zostanie również przegląd scenariuszy testów w aplikacjach .NET (wzorce MVP i MVC).


Plan szkolenia

Wprowadzenie do metodologii Test-Driven Development

  • Podstawowe zasady i praktyki TDD
  • Stosowanie cyklu TDD Red-Green-Refactor
  • Zalety i wady TDD

Projektowanie obiektowe pod kątem testów

  • SOLID OOP
    • Zasada pojedynczej odpowiedzialności - Single-Responsibility Principle
    • Zasada otwarte-zamknięte - Open/Close Principle
    • Zasada podstawiania Liskov - Liskov Substitution Principle
    • Zasada segregacji interfejsów - Interface Segregation Principle
    • Zasada odwracania zależności - Dependency Inversion Principle
  • Dependency Injection
    • Praca z frameworkami DI – Ninject, SimpleInjector
  • Refaktoring
    • Ekstrakcja klas lub interfejsów
    • Zmiana nazw zmiennych, pól, metod i klas
    • Enkapsulacja pól
    • Zastępowanie instrukcji warunkowych polimorfizmem
    • Opóźnianie typowania – słowo kluczowe var

Testy jednostkowe

  • Definicja testu jednostkowego
  • Organizacja testów i kolejność testowania
  • Przegląd framework’ów testów jednostkowych
    • NUnit
    • XUnit
  • Wzorce testów jednostkowych
    • Four-Phase Test
    • State Verification
    • Guard Assertion
    • Delta Assertion
    • Custom Assertion
    • Behavior Verification

Izolacja testów

  • Obiekty naśladujące Fake, Dummy, Stub i Mock
  • Użycie obiektów Stub - weryfikacja stanu obiektów
  • Behaviour-Based Testing – obiekty Mock
  • Biblioteka Moq – dynamiczne tworzenie obiektów naśladujących

Testy integracyjne

  • Pisanie i uruchamianie testów integracyjnych
  • Testy integracyjne End-to-End

BDD - Behaviour-Driven Design

  • BDD jako "TDD done right"
  • Testy akceptacyjne dla User Stories - framework SpecFlow
  • Testy jednostkowe w BDD - framework Machine.Specification

Scenariusze testów w .NET Framework - Case Studies

  • TDD i WebForms – wzorzec MVP
  • TDD i ASP.NET MVC

Pokrycie kodu testami

  • Przegląd narzędzi do Code-Coverage

Wymagana znajomość tematów ze szkolenia Programowanie w języku C#

3 dni po 8 godzin lekcyjnych