Page History
...
Unittests med en kørende MariaDb
I det CprIndlæseren selv CprIndlæseren selv migrerer databaseskemaet (via FlywayLiquibase), samt i overensstemmelse med NSP husregler ikke benytter ORM som Hibernate, er det blevet godkendt at unittests selv starter en mariadb database via docker, og tester ved brug af den.
TestContainers er et java bibliotek som tillader programmatisk instruering af docker starter op, og herved starter en ny tom mariadb container op, som applikationen kan køre databasemigreringer mod, og herefter benytte i alle unittestsDer anvendes TestContainers til automatisk at starte en mariadb docker container op, som anvendes ved unittest.
For eksempel se https://svn.nspop.dk/svn/importers/cprindlaeser/trunk/src/test/java/dk/nsp/indlaeser/cpr/BaseTest.java klassen i CprIndlæser-projektet.
...
Tests til integrationstests markeres i koden med en custom testkategori og projektet sættes op så disse kan køres ved at kørekøres som beskrevet nedenfor.
Disse tests vil så kræve kræver at indlæseren samt de korrekte afhængigheder allerede kører, hvilket typisk laves via docker-compose. For CprIndlæseren er compose/testdevelopment/docker-compose.yml lavet således, at denne starter en CprIndlæser, database samt SKRS i en opsætning, som kan testes via integrationstestene. Så man kan starte denne docker-compose fil lokalt (docker-compose up) og så ved siden af køre integrationstestene, som vil lægge en fil op, vente på at den bliver indlæst, og herefter se efter i både database samt SKRS om indlæsningerne er gået godt.
Inden docker-compose setup'et startes, skal projektet bygges. Det gøres med følgende kommando fra projektroden:
mvn clean install -DskipTests=trueNår projektet er bygget startes Integrationstesten afvikles ved først at starte et lokalt udviklingmiljø op med kommandoen:
...
Bemærk: Det kan tage op mod et minut før containeren er klar. De nødvendige databaser bliver oprettet automatisk. Bemærk at projektet skal bygges før ovenstående kommando fungerer, dette gøres med følgende kommando, ligeledes fra projektroden:
mvn clean install -DskipTests=trueHerefter Her efter kan selve integrationstest afvikles:
...