C# .NET: Testy jednostkowe i integracyjne + praktyka
Kompletny kurs pisania testów automtycznych w C# (.NET) z wykorzystaniem FluentAssertions, Moq + zadania praktyczne
Description
W tym kursie, przedstawię Ci technikę pisania testów automatycznych w języku C# - będą to testy jednostkowe i integracyjne.
Z wykorzystaniem takich narzędzi jak xUnit, Moq, FluentAssertions czy InMemoryDatabase, będziemy w stanie napisać automatyzacje kodu, dzięki której będziemy mieć pewność, że nasz kod nie zawiera ukrytych bugów
Podstawowa różnica między testowaniem ręcznym a automatycznym jest prosta. W przypadku testowania ręcznego człowiek jest odpowiedzialny za samodzielne testowanie funkcjonalności oprogramowania w sposób, w jaki zrobiłby to użytkownik. Testowanie automatyczne odbywa się za pomocą narzędzia do automatyzacji, dzięki czemu można poświęcić więcej czasu na zadania o większej wartości, takie jak testy eksploracyjne, jednocześnie automatyzując czasochłonne testy, takie jak testy regresji.
Zaletą testowania ręcznego jest to, że pozwala on ludzkiemu umysłowi wydobyć z testu spostrzeżenia, które w przeciwnym razie mogłyby zostać pominięte przez automatyzację testów. Testowanie automatyczne jest odpowiednie w przypadku dużych projektów, projektów, które wymagają ciągłego testowania tych samych obszarów oraz projektów, które przeszły już proces wstępnego ręcznego testowania.
Po co pisać testy automatyczne?
Przede wszystkim będziemy mieć pewność, że kod który został pokryty testami automatycznymi, działa tak jak zakładamy. Na produkcji nie zaskoczą nas błędy, jeżeli napiszemy odpowiednie przypadki testowe. Mając zaimplementowane testy jednostkowe i integracyjne, to bez konieczności manualnego sprawdzania istniejących już funkcjonalności, będziemy mieć pewność, że nasze zmiany nie wpłynęły na działanie istniejących już funkcjnonalności. W ten sposób czas poświęcony na napisanie testów zwróci się niejednokrotnie.
Oprócz tego testy stanowią swego rodzaju dokumentacje kodu. Osoby które dołączają do projektu, na podstawie testów mogą stwierdzić jak dany kawałek kodu się powinnien zachować i jakie przykładowe rezultaty powinnien zwracać i w konkretnych przypadkach.
Oszczędzamy czas testerów manualnych. Jak wiemy, czas to pieniądz - czas wykonania każdego testu manualnego kosztuje. Odpowiednie testy redukują czas jaki testerzy poświęcają na sprawdzenie zmian po każdej zmianie w aplikacji. Bez testów automatycznych liczba drobiazgów, na jakich musiałby się skupić tester byłaby zdecydowanie większa.
Lepsza jakość kodu. Pisząc testy automatyczne, często analizując dany kawałek kodu znajdziemy miejsce na jego ulepszenie stosując się do zasad SOLID czy wzorców projektowych.
What You Will Learn!
- pisać testy jednostkowe w xUnit z użyciem bibliotek Moq i FluentAssertions
- pisać testy integracyjne dla projektów webowych korzystająć z WebApplicationFactoryBuilder
- Mockować bazę danych jako entity framework InMemoryDatabase
- Wykonywać testy integracyjne wymagające autentykacji i autoryzacji użytkowników
- Dobrych praktyk pisania testów automtycznych
Who Should Attend!
- Osoba ze znajomość języka C# chcąca nauczyć się pisania testów jednostkowych i integracyjnych