Cześć, chciałbym przystąpić do refaktoryzacj mojego restu. Przede wszystkim myślę o testach i zacząłem się tak zastanawiać. Otóż póki co mam kilka unit testów napisanych do jakiś serwisów, które tego wymagały (jeśli metoda serwisu była nakładką jedynie na jakiś wyciąg z bazy to olewałem to). I naszły mnie takie refleksje:
Czy nie wystarczyłoby przetestować po prostu wszystkich metod z kontrolerów ? W sensie no wiadomo, zasymulować wywołanie http i posprawdzać statusy i zwrotne jsony ? Porobić wszystkie przypadki dla danej metody i nie powinno to wystarczyć ? Przecież w tym wszystkim znajduje się cała logika z aplikacji i jeśli te testy przejdą to znaczy, że system działa dobrze. Dane do każdej metody generowałbym sobie za pomocą wczytania testowego sqla za pomocą adnotacji @sql i robił rollback po zakończeniu metody.
Druga sprawa dotyczy zrobienia kilku środowisk i odpowiedniej konfiguracji bazy danych. Bo widzę, że w profesjonalnym podejściu robi się dwa środowiska: programistyczne i produkcyjne. Ja póki co mam po prostu jedno środowisko z jedną bazą danych MySQL na zewnętrznym serwerze, której schemat generuje sobie Hibernate ( korzystam ze spring boota). Jak to się powinno robić z tymi dwoma środowiskami ? Czy to nie powinno być tak, że w Mavenie robię sobie dwa profile i w środowisku produkcyjnym stawiam tego MySQL i schemat generuje za pomocą plików SQL za pomocą jakiegoś narzędzia typu FlyWay ? A na środowisku devovym mam jakąś bazę w pamięci typu H2 lub HSQL i ich schemat generuje już sobie hibernate ? Czy wtedy taką bazę testową powinienem czyścić po każdym nowym wygenerowaniu paczki i wczytywać początkowe dane z plików sql czy jak ? Po prostu nigdzie do tej pory nie znalazłem jakiś materiałów o samej konfiguracji projektu już w takim profesjonalnym podejściu i jak to wszystko powinno wyglądać.
Trzecie ostatnie najkrótsze pytanie: w jaki sposób spring boot mi skonfiguruje bazę danych jeśli sam nie dodam żadnych propertiesów do pliku ani nie utworzę żadnych customowych beanów typu DataSource ?