Dołączyłem do projektu, który ma wiele plików z instrukcjami SQL do tworzenia bazy danych, która jest używana do testowania integracji.Tworzenie tymczasowej bazy danych działającej w różnych fazach testowania?
Zastanawiam się, w jaki sposób mogę użyć tych plików do utworzenia bazy danych dla testów jednostkowych (przy użyciu java i maven).
Mogę utworzyć bazę danych HSQL w pamięci dla każdego testu jednostkowego, a nawet użyć funkcji wścibskiej bazy danych jdbc, ale jest tak wiele instrukcji SQL do wykonania w konfiguracji testowej, że nie jest to skalowalne.
Chciałbym więc utworzyć tymczasową bazę danych (która ładuje instrukcje SQL) na początku fazy testowej, zlecić jednostce testowanie dostępu do tej tymczasowej bazy danych i wykonać różne operacje, a następnie usunąć tymczasową bazę danych koniec fazy testowej.
Przyjrzałem się funkcji sql-maven-plugin, która pozwoliłaby mi wykonywać fazy testowe, ale nie jestem pewien, jak skonfigurować tymczasową bazę danych, która będzie dostępna we wszystkich testach jednostkowych. Nie ma serwera, z którym można się połączyć, a baza danych w pamięci nie będzie działać w wielu testach jednostkowych (zakładam).
Jedną z opcji może być użycie unikalnego pliku tymczasowego, np. określanie adresu URL sterownika JDBC jako jdbc: hsqldb: file:/path/to/temporary/file, ale nie jestem pewien, jak wygenerować unikalny plik tymczasowy w aplikacji maven.
Wszelkie sugestie, jak to zrobić, lub czy jest lepsze podejście do podjęcia?
Aktualizacja: Postanowiłem użyć opartej na plikach bazy danych utworzonej w katalogu docelowym/db. Używam wtyczki maven clean, aby usunąć katalog docelowy/db przed uruchomieniem testów oraz wtyczkę maven sql, aby utworzyć bazę danych ze skryptów.
Dzięki za odpowiedź. Tak, powolne jest tworzenie całej bazy danych w @Before w każdym teście jednostkowym. Nie znam H2 ani derby, ale zajrzę do nich. –
@Benson: Jak wspomniano na jednym z twoich innych postów wczoraj, jak zalecono w 4), faktycznie stworzyłem dla tego wtyczkę Mavena. – carlspring