Techniki testowania oprogramowania są bardzo zróżnicowane, a im więcej się o nich dowiesz, zaczniesz widzieć wiele różnych (a czasem sprzecznych) wskazówek. Nie ma jednej „książki” do przejścia.
Myślę, że znajdujesz się w sytuacji, w której widziałeś wskazówki dotyczące testów jednostkowych, które mówią coś takiego
- Każdy test powinien być samodzielny i nie powinny mieć na niego wpływu inne testy
- Każdy test jednostkowy powinien przetestować jedną rzecz i tylko jedną rzecz
- Testy jednostkowe nie powinny trafić do bazy danych
i tak dalej. Wszystkie są prawidłowe, w zależności od tego, jak zdefiniujesz „test jednostkowy” .
Zdefiniowałbym „test jednostkowy” jako coś w rodzaju: „test, który wykonuje jedną funkcjonalność dla jednej jednostki kodu, odizolowany od innych zależnych komponentów”.
Zgodnie z tą definicją to, co robisz (jeśli wymaga dodania rekordu do bazy danych przed uruchomieniem testu), wcale nie jest „testem jednostkowym”, ale raczej tym, co jest powszechnie nazywane „testem integracyjnym”. (Prawdziwy test jednostkowy, z mojej definicji, nie trafi do bazy danych, więc nie trzeba dodawać rekordu przed jego usunięciem).
Test integracyjny sprawdzi funkcjonalność wykorzystującą wiele komponentów (takich jak interfejs użytkownika i baza danych), a wytyczne, które miałyby zastosowanie do testów jednostkowych, niekoniecznie dotyczą testów integracyjnych.
Jak wspomnieli inni w swoich odpowiedziach, to, co robisz, niekoniecznie jest złe, nawet jeśli robisz rzeczy sprzeczne z niektórymi wskazówkami dotyczącymi testów jednostkowych. Zamiast tego spróbuj uzasadnić to, co naprawdę testujesz w każdej metodzie testowej, a jeśli okaże się, że potrzebujesz wielu komponentów, aby spełnić test, a niektóre komponenty wymagają wstępnej konfiguracji, to zrób to.
Ale przede wszystkim rozumiem, że istnieje wiele rodzajów testów oprogramowania (testy jednostkowe, testy systemowe, testy integracyjne, testy eksploracyjne itp.) I nie próbuj stosować wskazówek jednego typu do wszystkich innych.