Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[L!der] Test Driven Development in C#, workshop

[L!der] Test Driven Development in C#, workshop

Workshops about unit testing and Test Driven Development in C#
code: https://github.com/mturzynskigoyello/tdd

L!der Workshops Day; Sopot, Poland

Michał Michalczuk

November 08, 2017
Tweet

More Decks by Michał Michalczuk

Other Decks in Programming

Transcript

  1. Testy? • Prostszy kod • Architektura • Luźne powiązania •

    Bezpieczniejsza modyfikacja kodu Na co wpływają testy
  2. Testy Jednostkowe • Tylko jedna klasa • Tylko jedna metoda

    • Tylko unit Izolujemy dokładnie jedną rzecz. Sprawdzamy jedną rzecz
  3. Testy Integracyjne • Interakcja wielu klas • Czy klasy wspólnie

    poprawnie działają Możemy sprawdzić czy całe moduły system działają wspólnie. Sprawdzamy jak rzeczy ze sobą współpracują
  4. Testy Jednostkowe • Tylko jedna klasa • Tylko jedna metoda

    • Tylko unit Izolujemy dokładnie jedną rzecz. Sprawdzamy jedną rzecz
  5. • Pierwotnie port z Junit • Wszystkie języki .net •

    Aktualnie: v.3 • Open Source http://nunit.org/ 9
  6. Struktura testu 10 Klasa testowa Metoda testowa (jeden przypadek) Klasa

    testowana. Tworzymy instancję. Wykonaj test Sprawdź wyniki
  7. Struktura testu 11 SetUp Wykona się przed każdym testem Metod

    testowych może być dużo. Po jednej na przypadek.
  8. Test Driven Development • Testy jako element procesu • Najpierw

    testy • Testy wpływają na architecture • Testy przyśpieszają dalszą pracę Idź za testem
  9. Red Green Refactor Cykl pracy Red Green Refactor Napisz test

    który nie przechodzi. Napisz implementację. Test przechodzi. Refactoring. Poprawiamy.
  10. Dobry test jednostkowy to … • Jeden przypadek • Jedna

    asercja • Dla jednej klasy • Niezależny od innych klas • Niezależny od innych testów Testy mogą wykonywać się w dowolnej kolejności. 19
  11. Tworzymy kod przez kompozycję. Większość naszych klas wykorzystuje inne klasy

    do działania. • Jak je testować? • Czy to dalej testy jednostkowe? 21
  12. To wciąż testy jednostkowe. Dalej testujemy tylko jedną klasę. Oraz

    kontrakty pomiędzy klasami. 22 Jeśli nie użyjemy implementacji klas zależnych
  13. Stub • Nie chcemy pobierać prawdziwych danych • Nie chcemy

    korzystać z implementacji naszych zależności • Sami „nagrajmy” co mają nam zwracać https://dev.to/milipski/test-doubles---fakes-mocks-and-stubs
  14. Mock • Czasem wystarczy wytestować czy wykonaliśmy metodę • Np.

    zapis – sprawdź czy został wykonany … lub czy nie został https://dev.to/milipski/test-doubles---fakes-mocks-and-stubs
  15. Testy jednostkowe w C# • Moq • FakeItEasy • Microsoft

    Fakes • NMock • … Biblioteki do “izolacji” wspierające framworki
  16. Przydadne linki MS Academy: Test-Driven Development https://mva.microsoft.com/en-US/training-courses/testdriven-development-16458 Unit testing frameworks

    in C# compartion https://raygun.com/blog/unit-testing-frameworks-c/ The Art. Of Unit Testing http://artofunittesting.com/ Nasze repozytorium: https://github.com/mturzyn skigoyello/tdd 30