Jeg kan ikke sige det med sikkerhed uden at se din testkonfiguration, men jeg gætter på, at det virker med docker run
og ikke Testcontainere, fordi docker run
viser en fast port (altid 27017), men testcontainere vil afsløre port 27017
som en tilfældig port (for at undgå portkonflikter på testmaskiner).
For at bruge Testcontainere med en Quarkus-test skal dine test følge dette flow:
- Start containere. Dette er nødvendigt, fordi den tilfældige eksponerede port for MongoDB kun kan kendes efter beholderen er startet.
-
Få randomiserede porte fra Testcontainere, efter containere er startet, og indstil derefter eventuelle testkonfigurationsegenskaber, der afhænger af containerporte. For eksempel:
static GenericContainer mongodb = new GenericContainer<>("mongo:4.2").withExposedPorts(27017); static { mongodb.start(); System.setProperty("quarkus.mongodb.connection-string", "mongodb://" + mongodb.getContainerIpAddress() + ":" + mongodb.getFirstMappedPort()); }
- Lad Quarkus starte. Da Quarkus ikke understøtter dynamisk konfiguration, skal du indstille MongoDB-porten, før Quarkus starter.