window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Guide rapide sur l'exécution de conteneurs à partir de tests - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2022-08-16
Développement de logiciels

Guide rapide sur l'exécution de conteneurs à partir de tests

Bartlomiej Kuczyński

Apprenez à exécuter des tests de formulaires de conteneurs dans notre article sur Java où notre développeur Java senior montre toute la magie.

J'utilise Spring Boot dans le projet afin de réduire le nombre de documents de base. Les conteneurs de test sont indépendants des Cadre de travail Spring et vous pouvez les utiliser sans cela.

J'utilise Testcontainers version 1.17.3, mais n'hésitez pas à utiliser la plus récente. Tests avec le conteneur Postgres.

Définir d'abord le conteneur :

public class Postgres13TC extends PostgreSQLContainer {
  private static final Postgres13TC TC = new Postgres13TC() ;

  private Postgres13TC() {
    super("postgres:13.2") ;
  }

  public static Postgres13TC getInstance() {
    return TC ;
  }

  @Override
  public void start() {
    super.start() ;
    System.setProperty("DB_URL", TC.getJdbcUrl()) ;
    System.setProperty("DB_USERNAME", TC.getUsername()) ;
    System.setProperty("DB_PASSWORD", TC.getPassword()) ;
  }

  @Override
  public void stop() {
    // ne fait rien. Il s'agit d'une instance partagée. Laissez la JVM gérer cette opération.
  }
}

Ensuite, nous initialisons le contexte d'application Spring. Nous récupérons toutes les configurations de sources de données de l'instance de conteneur et les définissons en tant que configuration Spring :

public class ContainerInit implements ApplicationContextInitializer {

  public static Postgres13TC postgres13TC ;

  statique {
    postgres13TC = Postgres13TC.getInstance() ;
    postgres13TC.start() ;
  }

  @Override
  public void initialize(ConfigurableApplicationContext applicationContext) {
    TestPropertySourceUtils.addInlinedPropertiesToEnvironment(
        applicationContext,
        "spring.datasource.url=" + postgres13TC.getJdbcUrl(),
        "spring.datasource.username=" + postgres13TC.getUsername(),
        "spring.datasource.password=" + postgres13TC.getPassword(),
        "db.host=" + postgres13TC.getHost(),
        "db.port=" + postgres13TC.getMappedPort(postgres13TC.POSTGRESQL_PORT),
        "db.name=" + postgres13TC.getDatabaseName(),
        "db.username=" + postgres13TC.getUsername(),
        "db.password=" + postgres13TC.getPassword()
    ) ;
  }
}

Enfin, nous pouvons exécuter notre test, et tout sera lancé sous le capot :

@SpringBootTest(webEnvironment = RANDOM_PORT)
@AutoConfigureTestDatabase(replace = NONE)
@ContextConfiguration(initializers = ContainerInit.class)
@Testcontainers
class DummyRepositoryTest {

  @Autowired
  private DummyRepository dummyRepository ;

  @Test
  void shouldReturnDummy() {
    var byId = dummyRepository.getById(10L) ;
    var expected = new Dummy() ;
    expected.setId(10L) ;
    assertThat(byId).completes().emitsCount(1).emits(expected) ;
  }
}

Ou si nous voulons exécuter des tests indépendants de Spring, nous pouvons utiliser directement le conteneur :

@Testcontainers
class SimpleDbTest {

  @Container
  private static final Postgres13TC postgres13TC = Postgres13TC.getInstance() ;

  @Test
  void testConnection() {
    assumeThat(postgres13TC.isRunning()) ;
    var connectionProps = new Properties() ;
    connectionProps.put("user", postgres13TC.getUsername()) ;
    connectionProps.put("password", postgres13TC.getPassword()) ;
    try (Connection connection = DriverManager.getConnection(postgres13TC.getJdbcUrl(),
        connectionProps)) {
    var resultSet = connection.prepareStatement("Select 1").executeQuery() ;
    resultSet.next() ;
    assertThat(resultSet.getInt(1)).isEqualTo(1) ;
    } catch (SQLException sqlException) {
    assertThat((Exception) sqlException).doesNotThrowAnyException() ;
    }
  }
}

En résumé

Testcontainers sont des outils très faciles à utiliser qui nous aident à créer des tests d'intégration qui utilisent des conteneurs Docker. Cela nous donne plus de flexibilité et augmente la vitesse de développement. La mise en place correcte de la configuration des tests réduit le temps nécessaire à l'intégration des nouveaux développeurs. Ils n'ont pas besoin de configurer toutes les dépendances, il suffit d'exécuter les tests écrits avec les fichiers de configuration sélectionnés.

bannière de coopération

Articles connexes

Développement de logiciels

9 erreurs à éviter lors de la programmation en Java

Quelles sont les erreurs à éviter lors de la programmation en Java ? Dans l'article suivant, nous répondons à cette question.

The Codest
Rafal Sawicki Développeur Java
Solutions pour les entreprises et les grandes entreprises

Comment Java peut soutenir votre entreprise ?

Avant de commencer, j'aimerais vous rappeler une chose importante. Java n'est pas seulement un langage de programmation.

Bartlomiej Kuczynski
Solutions pour les entreprises et les grandes entreprises

La bonne façon de trouver les meilleurs développeurs Java

Trouver le parfait développeur Java peut s'avérer une tâche ardue. Alors que la demande du marché pour de tels professionnels croît à un rythme effréné, les sources disponibles pour la recherche de talents peuvent parfois sembler...

The Codest
Grzegorz Rozmus Chef d'unité Java

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench