reklama - zainteresowany?

Test-Driven Development w C# i .NET. Tworzenie wysokiej jako - Helion

Test-Driven Development w C# i .NET. Tworzenie wysokiej jako
ebook
Autor: Adam Tibi
Tytuł oryginału: Pragmatic Test-Driven Development in C# and .NET: Write loosely coupled, documented, and high-quality code with DDD using familiar tools and libraries
Tłumaczenie: Robert G
ISBN: 978-83-289-1694-4
stron: 344, Format: ebook
Księgarnia: Helion

Cena książki: 79,00 zł

Książka będzie dostępna od listopada 2024

Tagi: .NET - Programowanie | C# - Programowanie

Spo

Spis treści

Test-Driven Development w C# i .NET. Tworzenie wysokiej jakości kodu w architekturze DDD za pomocą znanych narzędzi i bibliotek eBook -- spis treści

Część I. Rozpoczęcie pracy i podstawy TDD

Rozdział 1. Przygotowanie pierwszej implementacji TDD

  • Wymagania techniczne
  • Wybór zintegrowanego środowiska programistycznego
    • Microsoft Visual Studio
    • JetBrains Rider
    • Visual Studio Code
    • Wersje .NET i C#
  • Utworzenie szkieletu rozwiązania razem z testami jednostkowymi
    • Wymagania
    • Utworzenie szkieletu projektu
    • Zapoznanie się z wbudowanymi narzędziami przeznaczonymi do przeprowadzania testów
  • Implementacja wymagań z zastosowaniem programowania sterowanego testami
    • SUT
    • Klasa testów
    • Warunki i oczekiwania
    • Czerwony - zielony
    • Wzorzec AAA
    • Jeszcze więcej testów
  • Podsumowanie
  • Dalsza lektura

Rozdział 2. Wprowadzenie do mechanizmu wstrzykiwania zależności

  • Wymagania techniczne
  • Aplikacja WFA
    • Utworzenie przykładowej aplikacji
    • Dodawanie komponentu odpowiedzialnego za dostarczanie rzeczywistej prognozy pogody
  • Poznawanie mechanizmu wstrzykiwania zależności
    • Typy abstrakcyjne i konkretne
    • Czym jest zależność?
    • Znaczenie zależności
    • Definiuj zależności od abstrakcji, a nie od konkretnej implementacji
  • Wprowadzenie do mechanizmu wstrzykiwania zależności
    • Pierwszy przykład wstrzykiwania zależności
    • Testowanie API
    • Czym jest szew?
    • Odwrócenie kontroli
  • Używanie kontenerów wstrzykiwania zależności
    • Rola kontenera
    • Kontenery podmiotów zewnętrznych
    • Cykl życiowy usługi
    • Refaktoryzacja pod kątem wstrzykiwania zależności
    • Rzeczywisty scenariusz użycia wstrzykiwania zależności
    • Wstrzykiwanie metody
    • Wstrzykiwanie właściwości
    • Lokalizator usługi
  • Podsumowanie
  • Dalsza lektura

Rozdział 3. Rozpoczęcie pracy z testami jednostkowymi

  • Wymagania techniczne
  • Wprowadzenie do testów jednostkowych
    • Czym jest testowanie jednostkowe?
    • Frameworki testów jednostkowych
  • Wyjaśnienie struktury projektu stosującego testy jednostkowe
    • Dodawanie projektu xUnit za pomocą wiersza poleceń
    • Konwencje nazw w projekcie testów jednostkowych
    • Wykonanie przykładowego testu jednostkowego
    • Okno Test Explorer
  • Analiza anatomii klasy testu jednostkowego
    • Konwencja nadawania nazwy klasie
    • Metody testowe
    • Wzorzec "przygotowanie, działanie, asercja"
    • Testowany system
  • Omówienie podstaw frameworka xUnit
    • Atrybuty Fact i Theory
    • Wykonywanie testów
    • Klasa Assert
    • Klasa Record
  • Omówienie powiązań zachodzących między regułami SOLID a testami jednostkowymi
    • Reguła jednej odpowiedzialności
    • Reguła otwarte-zamknięte
    • Zasada podstawień Barbary Liskov
    • Zasada rozdzielania interfejsów
    • Zasada odwrócenia zależności
  • Podsumowanie
  • Dalsza lektura

Rozdział 4. Rzeczywiste stosowanie testów jednostkowych z wykorzystaniem dublerów używanych podczas testów

  • Wymagania techniczne
  • Wprowadzenie do koncepcji dublerów używanych podczas testów
    • Typy dublerów używanych podczas testów
    • Którego rozwiązania należy używać w programowaniu sterowanym testami?
  • Omówienie kolejnych kategorii testów
    • Testy integracyjne
    • Testy sintegration
    • Testy akceptacyjne
    • Wybór kategorii testów
  • Podsumowanie
  • Dalsza lektura

Rozdział 5. Programowanie sterowane testami

  • Wymagania techniczne
  • Filary programowania sterowanego testami
    • Najpierw testy
    • Czerwony, zielony, refaktoryzacja
  • Programowanie sterowane testami w praktyce
    • Utworzenie rozwiązania w wierszu poleceń
    • Dodawanie zadania programistycznego
    • Krótkie podsumowanie
  • Najczęściej zadawane pytania i zastrzeżenia do programowania sterowanego testami
    • Dlaczego potrzebne jest programowanie sterowane testami? Czy nie można po prostu używać testów jednostkowych?
    • Podejście w stylu TDD podczas tworzenia oprogramowania wydaje się nienaturalne
    • Stosowanie programowania sterowanego testami będzie nas spowalniać
    • Czy programowanie sterowane testami ma znaczenie dla startupów?
    • Nie lubię programowania sterowanego testami i wolę najpierw zająć się swoją bazą kodu
    • Testy jednostkowe nie sprawdzają rzeczywistych aspektów kodu
    • Podobno istnieją dwie szkoły w zakresie programowania sterowanego testami - londyńska i klasyczna. Jakie są między nimi różnice?
    • Dlaczego niektórzy programiści nie lubią testów jednostkowych i programowania sterowanego testami?
    • Jaki związek zachodzi między programowaniem sterowanym testami a programowaniem ekstremalnym?
    • Czy system jest w stanie przetrwać bez programowania sterowanego testami?
  • Programowanie sterowane testami i testy sintegration
    • Testy sintegration jako alternatywa dla testów jednostkowych w programowaniu sterowanym testami
    • Wyzwania pojawiające się podczas stosowania testów sintegration
  • Podsumowanie
  • Dalsza lektura

Rozdział 6. Wskazówki FIRSTHAND dotyczące programowania sterowanego testami

  • Wymagania techniczne
  • Wskazówka "pierwszy"
    • Później oznacza nigdy
    • Przygotowanie do użycia mechanizmu wstrzykiwania zależności
    • Opracowanie z perspektywy klienta
    • Promowanie testowania sposobu działania
    • Eliminowanie fałszywych alarmów
    • Eliminowanie kodu spekulatywnego
  • Wskazówka "intencja"
    • NazwaMetody_Warunek_Oczekiwanie
    • NazwaMetody_Should_When
    • Struktura testu jednostkowego
  • Wskazówka "czytelność"
    • Inicjalizacja konstruktora testowanego systemu
    • Wzorzec budowniczego
  • Wskazówka "jeden sposób działania"
    • Czym jest sposób działania?
    • Przykład sposobu działania
    • Testowanie jedynie zewnętrznie zdefiniowanego sposobu działania
    • Dlaczego nie testujemy elementów wewnętrznych?
    • Test sprawdza tylko jeden sposób działania
  • Wskazówka "dokładność"
    • Testy jednostkowe przeznaczone do testowania zależności
    • Co oznacza pokrycie kodu testami?
    • Bycie dokładnym
  • Wskazówka "wysoka wydajność"
    • Integracja jako ukryte jednostki
    • Testy jednostkowe w ogromnym stopniu wykorzystujące procesor i pamięć operacyjną
    • Istnienie zbyt wielu testów
  • Wskazówka "automatyzacja"
    • Automatyzacja począwszy od dnia pierwszego
    • Niezależność od platformy
    • Wysoka wydajność w potoku ciągłej integracji
  • Wskazówka "brak współzależności"
    • Odpowiedzialność frameworka testów jednostkowych
    • Odpowiedzialność programisty
  • Wskazówka "deterministyczność"
    • Przypadki niedeterministycznych testów jednostkowych
    • Przykład zamrożenia czasu
  • Podsumowanie

Część II. Stworzenie aplikacji z zastosowaniem podejścia w stylu TDD

Rozdział 7. Pragmatyczne omówienie architektury DDD

  • Wymagania techniczne
  • Praca z przykładową aplikacją
    • Projekt aplikacji
    • Projekt obiektów kontraktu
    • Projekt warstwy dziedziny
  • Poznawanie dziedzin
    • Obiekty dziedziny
    • Encje i obiekty wartości
    • Agregacja
    • Modele anemiczne
    • Wszechobecny język
  • Poznawanie usług
    • Zarządzanie postem
    • Usługi aplikacji
    • Usługi infrastruktury
    • Cechy charakterystyczne usługi
  • Poznawanie repozytoriów
    • Przykład repozytorium
    • Entity Framework i repozytoria
  • Połączenie wszystkiego w całość
    • Okno Solution Explorer
    • Widok architekturalny
  • Podsumowanie
  • Dalsza lektura

Rozdział 8. Opracowanie aplikacji pozwalającej na rezerwowanie wizyt

  • Wymagania techniczne
  • Zebranie wymagań biznesowych
    • Cele biznesowe
    • Historyjki użytkownika
  • Projektowanie w duchu architektury DDD
    • Obiekty dziedziny
    • Usługi dziedziny
    • Architektura systemu
  • Implementowanie tras
    • Frontend
    • Backend w postaci relacyjnej bazy danych
    • Backend w postaci bazy danych opartej na dokumentach
    • Używanie wzorca mediatora
  • Podsumowanie
  • Dalsza lektura

Rozdział 9. Wykorzystanie Entity Framework i relacyjnej bazy danych do opracowania aplikacji pozwalającej na rezerwowanie wizyt

  • Wymagania techniczne
  • Planowanie kodu źródłowego i struktury projektu
    • Analiza struktury projektu
    • Utworzenie projektów i konfiguracja zależności
    • Konfiguracja projektu dziedziny
    • Przygotowanie Entity Framework
    • Przygotowanie projektu witryny internetowej
  • Implementacja Web API z użyciem programowania sterowanego testami
    • Używanie działającego dostawcy EF dla magazynu danych w pamięci
    • Implementacja pierwszej historyjki użytkownika
    • Implementacja piątej historyjki użytkownika (zarządzanie czasem)
  • Udzielenie odpowiedzi na najczęściej zadawane pytania
    • Czy te testy jednostkowe są wystarczające?
    • Dlaczego nie utworzyliśmy testów jednostkowych dla kontrolerów?
    • Czy system został wystarczająco przetestowany?
    • Pominęliśmy testowanie pewnych obszarów, więc jak osiągnąć wysoki poziom pokrycia testami?
  • Podsumowanie

Rozdział 10. Wykorzystanie wzorca repozytorium i bazy danych opartej na dokumentach do opracowania aplikacji pozwalającej na rezerwowanie wizyt

  • Wymagania techniczne
  • Planowanie kodu źródłowego i struktury projektu
    • Analiza struktury projektu
    • Utworzenie projektów i konfiguracja zależności
    • Konfiguracja projektu dziedziny
    • Wzorzec repozytorium
    • Przygotowanie projektu witryny internetowej
  • Implementacja Web API z użyciem programowania sterowanego testami
    • Implementacja pierwszej historyjki użytkownika
    • Implementacja piątej historyjki użytkownika (zarządzanie czasem)
  • Udzielenie odpowiedzi na najczęściej zadawane pytania
    • Czy te testy jednostkowe są wystarczające?
    • Dlaczego nie utworzyliśmy testów jednostkowych dla kontrolerów?
    • Dlaczego nie utworzyliśmy testów jednostkowych dla implementacji repozytoriów?
    • Czy system został wystarczająco przetestowany?
    • Pominęliśmy testowanie pewnych obszarów, więc jak osiągnąć wysoki poziom pokrycia testami?
  • Podsumowanie

Część III. Zastosowanie programowania sterowanego testami we własnych projektach

Rozdział 11. Wdrożenie potoku ciągłej integracji za pomocą usługi GitHub Actions

  • Wymagania techniczne
  • Wprowadzenie do systemu ciągłej integracji
    • Sposób działania systemu ciągłej integracji
    • Zalety systemu ciągłej integracji
  • Implementacja procesu ciągłej integracji za pomocą usługi GitHub Actions
    • Utworzenie przykładowego projektu w repozytorium GitHub
    • Zdefiniowanie sposobu działania
    • System ciągłej integracji i testowanie
    • Symulowanie testów zakończonych niepowodzeniem
    • Omówienie sposobu działania
  • Podsumowanie
  • Dalsza lektura

Rozdział 12. Praca z uaktualnianymi projektami

  • Wymagania techniczne
  • Analizowanie trudności
    • Obsługa mechanizmu wstrzykiwania zależności
    • Trudności związane z modyfikowaniem kodu źródłowego
    • Trudności związane z czasem i wysiłkiem
  • Strategia pozwalająca na zastosowanie programowania sterowanego testami
    • Rozważ ponowne utworzenie projektu
    • Zmiany kodu źródłowego
    • Natywna obsługa dla mechanizmu wstrzykiwania zależności
    • Poziom pokrycia testami przed dodaniem testów jednostkowych
  • Refaktoryzacja na potrzeby testów jednostkowych
    • Tworzenie egzemplarzy w kodzie
    • Zastępowanie statycznych elementów składowych
    • Zmiana struktury kodu źródłowego
  • Podsumowanie
  • Dalsza lektura

Rozdział 13. Zawiłości związane ze stosowaniem programowania sterowanego testami

  • Trudności techniczne
    • Projekt nowy czy uaktualniany?
    • Narzędzia i infrastruktura
  • Trudności w zespole
    • Doświadczenie zespołu
    • Ochota do działania
    • Czas
  • Trudności biznesowe
    • Korzyści biznesowe wynikające z programowania sterowanego testami
    • Wady testów jednostkowych z perspektywy biznesowej
  • Argumenty za programowaniem sterowanym testami i związane z nim błędne koncepcje
    • Testy jednostkowe, a nie programowanie sterowane testami
    • Testy jednostkowe nie są implementowane przez testerów
    • Sposób tworzenia i obsługi technicznej dokumentacji
    • Mamy niekompetentnych programistów
  • Podsumowanie

Dodatek A. Biblioteki, których najczęściej używa się podczas testów jednostkowych

  • Wymagania techniczne
  • Frameworki testów jednostkowych
    • MSTest
    • NUnit
  • Biblioteki imitacji
    • Moq
  • Biblioteki pomocnicze dla testów jednostkowych
    • Fluent Assertions
    • AutoFixture
  • Dalsza lektura

Dodatek B. Zaawansowane scenariusze związane z używaniem imitacji

  • Wymagania techniczne
  • Utworzenie biblioteki klienta OpenWeather
    • API One Call
    • Utworzenie szkieletu rozwiązania
    • Rozpoczęcie pracy nad implementacją z użyciem programowania sterowanego testami
    • Niezaliczenie i późniejsze zaliczenie testu
    • Podsumowanie
    • Analizowanie skomplikowanych scenariuszy imitacji
  • Dalsza lektura

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2025 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.