sql >> Databasteknik >  >> NoSQL >> MongoDB

Integrationstestning med Testcontainers + Quarkus + MongoDB

Jag kan inte säga säkert utan att se din testkonfiguration, men jag gissar att det fungerar med docker run och inte Testcontainers eftersom docker run exponerar en fast port (alltid 27017) men Testcontainers kommer att exponera port 27017 som en slumpmässig port (för att undvika portkonflikter på testmaskiner).

För att använda Testcontainers med ett Quarkus-test måste dina tester följa detta flöde:

  1. Starta behållare. Detta är nödvändigt eftersom den slumpmässiga exponerade porten för MongoDB bara kan kännas efter behållaren har startats.
  2. Skaffa randomiserade portar från Testcontainers efter att containrar har startat, ställ sedan in eventuella testkonfigurationsegenskaper som beror på containerportar. Till exempel:

    static GenericContainer mongodb = new GenericContainer<>("mongo:4.2").withExposedPorts(27017);
    static {
      mongodb.start();
      System.setProperty("quarkus.mongodb.connection-string",
                         "mongodb://" + mongodb.getContainerIpAddress() + ":" + mongodb.getFirstMappedPort());
    }
    
  3. Låt Quarkus börja. Eftersom Quarkus inte stöder dynamisk konfiguration måste du ställa in MongoDB-porten innan Quarkus startar.


  1. Hur bestämmer jag vilken NoSQL-teknik som ska användas?

  2. MongoDB:ställ in användare/lösenord för åtkomst till db

  3. Får timeout-fel när MongoDB Atlas ansluts till Mongoose

  4. infoga array i mongodb med pymongo