Testy jednostkowe są testami, które testują kod w rzeczywistej klasie. Inne zależności tej klasy są wyśmiewane lub ignorowane, ponieważ fokus jest testowaniem kodu wewnątrz klasy.
Testy integracyjne to testy obejmujące dostęp do dysku, usługi aplikacji i/lub ramy z docelowej aplikacji. Testy integracji uruchamiają izolowane z innych usług.
Podam przykład. Masz aplikację Spring i wykonałeś wiele testów jednostkowych, aby zagwarantować, że logika biznesowa działa poprawnie. Idealny. Ale jaki rodzaj testów trzeba zagwarantować:
- Usługa Aplikacja może rozpocząć
- Twoja jednostka baza danych jest mapowany poprawnie
- masz wszystkie niezbędne adnotacje działa zgodnie z oczekiwaniami
- filtr działa prawidłowo
- Twój API przyjmuje jakieś dane
- Twój główną cechą jest naprawdę pracujących w podstawowym scenariuszu
- Twoje zapytanie do bazy danych działa zgodnie z oczekiwaniami
- itp ...
ta nie może być wykonana z testów jednostkowych, ale (dobrze, Wiosna Kawałek można zrobić niektóre z nich ...), jak programista, musisz to również zagwarantować. To jest rola testów integracyjnych.
Idealny scenariusz testy integracyjne działa niezależnie od innych systemów, że aplikacja może wykorzystać w środowisku produkcyjnym (za pomocą Wiremock dla połączeń odpoczynek, bazy danych pamięci, etc).
Nieco ciekawości: Maven ma specjalną wtyczkę do testów integracyjnych: maven failsafe plugin
, która wykonała klasy testowe, których nazwa kończy się na IT. Przykład: UserIT.java.
Zamieszanie, co oznacza test Integracja
Niektórzy ludzie rozumieją „test integracyjny” jako testu polegającego na „integrację” dla innych systemów, które aktualnie w użyciu system. Tego rodzaju testy można przeprowadzać tylko w środowisku, w którym wszystkie te systemy są gotowe do udziału w tobie.
To może być tylko problem nazewnictwa, ale mamy brak testów (co rozumiem jako testy integracyjne), który odczuwa konieczność elementów opisanych powyżej. Wręcz przeciwnie, skaczemy o definicję testów jednostkowych (tylko klasa testowa) do testu integracji (cały prawdziwy system do góry). Co jest w środku, jeśli nie testy integracyjne?
Czy są one wykonywane na poziomie interfejsu użytkownika? przy użyciu selenu, czy jest napisany inny pakiet testów, podobny do zestawu testów jednostkowych, ale o szerszym zakresie? –
Niekoniecznie. Pomyśl o usłudze PaymentService za pomocą zewnętrznego źródła, takiego jak baza danych lub interfejs API innej firmy. Dostęp do niego może potrwać kilka sekund (w zły dzień) lub może to być długotrwały proces. Jest zbyt powolny dla testów jednostkowych (stąd przedrzeźniając go), ale nadal chcesz go przetestować, aby upewnić się, że działa prawidłowo. To właśnie tu przychodzi testowanie integracyjne. Nie są to testy, które uruchamia się wielokrotnie, zwykle przed wydaniem wydania lub jeśli masz je w CI. – firelore