Po co testy w JUnit ?
Testy aplikacji piszę się, żeby zapewnić wysoką jakość tworzonej aplikacji oraz wysoką jakość kodu. Wszystko ma ogromne znaczenie w przestrzeni czasu. Gdy aplikacje stają się coraz większe – automatycznie generują znacznie więcej błędów. Dlatego dobrze przetestowana aplikacji potrafi znacznie skrócić czas poprawiania błędów lub uchronić się przed błędami na produkcji.
Podstawową biblioteką do testów w JAVA jest JUnit 5. W prosty sposób, za pomocą adnotacji, pozwala uruchamiać testy oraz jest nieźle zintegrowane z IDE ( Intellij, Eclipse ).
Przykładowy test dla projektu employee wykorzystuję metodę employee.Repo.create do stworzenia obiektu. Potem za pomocą assercji w JAVA sprwadza czy pola stworzonego obiektu są równe wartości oczekiwanej.
@Test
void create() {
Employee employee = employeeRepo.create(FIRST_NAME_TEST, LAST_NAME_TEST, PESEL_TEST, SALARY_TEST);
assertEquals(employee.getFirstName(), FIRST_NAME_TEST);
assertEquals(employee.getLastName(), LAST_NAME_TEST);
assertEquals(employee.getSalary(), SALARY_TEST);
}
Z początkiem tworzenia aplikacji może jeszcze nie widać jak ważne są testy. Są one często pierwszym klientem usług, które testujemy, żeby sprawdzić czy działa.
Dzisiaj często używane są narzędzia automatyzujące testy, takie jak Jenkins, które uruchamiają wszystkie testy z Junit przed każdy zbudowaniem aplikacji na serwerze. Ten jeden napisany test po integracji z jenkinsem, może być wykonywany przez server kilkadziesiąt razy dziennie. Gdy którykolwiek z deweloperów coś zmieni, nie znając naszej logiki biznesowej, może popsuć naszą funkcjonalność. To właśnie dobrze napisany test zwróci deweloperowi błąd podczas budowania projektu i ostrzeże go informując, że jego kod psuje inną funkcjonalność.
Gdybyśmy w projekcie szkoleniowym company spróbowali stworzyć kolejną instancję obiektu employee w teście
Employee employee = employeeRepo.create(FIRST_NAME_TEST, LAST_NAME_TEST, PESEL_TEST, SALARY_TEST);
assertEquals(employee.getFirstName(), FIRST_NAME_TEST);
assertEquals(employee.getLastName(), LAST_NAME_TEST);
assertEquals(employee.getSalary(), SALARY_TEST);
employeeRepo.create(FIRST_NAME_TEST, LAST_NAME_TEST, PESEL_TEST, SALARY_TEST);
To otrzymamy duży, wyraźny ERROR, czyli błąd z instrukcją błędu (stracktrace-em).

Pisanie testów jest również sztuką , podobnie jak pisanie kodu—>należy dużo trenować. Napewno nauka pisania testów nie pójdzie na marne i szybko się zwraca deweloperowi w jakości tworzonego oprogramowania i w rezultacie w przyjemności z pracy. Twój manager również będzie szczęśliwy, jeśli będziesz szybciej dowoził tickety o lepszej jakości potwierdzone testami.
Wiele tak zwanych CODE REVIEW podczas PULL REQUEST, czyli podczas sprawdzenia jakości kodu przez innych programistów, odrzuca tickety jeśli nie posiadają one testów.
Podsumowanie-> Testy w Java
- Zapewnienie jakości aplikacji
- Zapewnienie jakości kodu
- Minimalizacja czasu naprawy błędów
- Wczesne wykrywanie błędów
- Zwiększenie czytelności kodu
- Profesjonalizm aplikacji
Testy w Java = DOBRA PRAKTYKA
Pozdrawiamy
Zespół Great