Historia pytania:
Wzorzec Arrange-Act-Assert (AAA) został zaproponowany w celu uproszczenia struktury testów i poprawy ich czytelności. Jest aktywnie stosowany we współczesnych frameworkach testowych i stanowi standard de facto przy pisaniu testów automatycznych wszelkiego rodzaju.
Problem:
Bez wyraźnej struktury przypadki testowe stają się nieporęczne, trudne do odczytania i ciężkie do utrzymania. Powstaje zamieszanie między przygotowaniem danych, wywołaniem testowanej funkcjonalności a sprawdzeniem wyników. Prowadzi to do gromadzenia długu technicznego i błędów w testach.
Rozwiązanie:
Ściśle przestrzegać wzorca AAA podczas pisania testu.
Kluczowe cechy:
Czy można naruszać kolejność AAA, jeśli test wydaje się oczywisty?
Zazwyczaj nie. Jakiekolwiek odstępstwo od struktury AAA zmniejsza czytelność testu dla innych programistów i czyni go podatnym na błędy przy utrzymaniu.
Czy dozwolone jest łączenie Act i Assert w jednym wyrażeniu dla krótkich testów?
Lepiej tego unikać, ponieważ utrudnia to zrozumienie i możliwe rozszerzenie testu w przyszłości.
Czy należy włączyć logikę czyszczenia danych (cleanup) w etapie Arrange?
Nie. Cleanup lub Teardown zazwyczaj realizowane jest w osobnych metodach, na przykład w hookach frameworka testowego (After, AfterEach).
Test dodawania wpisu do bazy danych najpierw wykonuje sprawdzenie, a dopiero potem go dodaje. Zawiera przypadkowy asert w środku.
Zalety:
Wady:
Test zaczyna się od czyszczenia danych, następnie dodanie wpisu, a dopiero potem sprawdzenie wyniku, ściśle według AAA.
Zalety:
Wady: