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 on juba olemas') } 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 }) }, } } })() Kiire juhend, kuidas testidest konteinereid käivitada - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2022-08-16
Tarkvaraarendus

Kiire juhend, kuidas testidest konteinereid käivitada

Bartlomiej Kuczyński

Õppige, kuidas käivitada konteinerite vormi teste meie Java-ga seotud artiklis, kus meie vanem Java-arendaja näitab kogu maagiat.

Ma kasutan Spring Boot aastal projekt et vähendada keedukirjeldusi. Testimismahutid on sõltumatud Spring Framework ja neid saab kasutada ka ilma selleta.

Ma kasutan Testcontainersi versiooni 1.17.3, kuid võite vabalt kasutada ka uuemat versiooni. Testid Postgres konteineriga.

Kõigepealt defineerige konteiner:

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() {
    // ei tee midagi. See on jagatud instants. Las JVM tegeleb selle toiminguga.
  }
}

Seejärel initsialiseerige Springi rakenduse kontekst. Saame kõik andmeallikate konfiguratsioonid konteineri instantsist ja seame need Springi konfiguratsiooniks:

public class ContainerInit implements ApplicationContextInitializer {

  public static Postgres13TC postgres13TC;

  static {
    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()
    );
  }
}

Lõpuks saame käivitada oma testi ja kõik käivitub kapoti all:

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

  @Autowired
  private DummyRepository dummyRepository;

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

Või kui me tahame käivitada Springi sõltumatu testi, võime kasutada konteinerit otse:

@Testikonteinerid
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();
    }
  }
}

Kokkuvõte

Testcontainerid on väga lihtsasti kasutatavad tööriistad, mis aitavad meil luua integratsiooniteste, mis kasutavad Dockeri konteinereid. See annab meile rohkem paindlikkust ja suurendab arenduskiirust. Testi konfiguratsiooni õige seadistamine vähendab uute arendajate pardaloleku aega. Nad ei pea seadistama kõiki sõltuvusi, vaid lihtsalt käivitama kirjutatud testid valitud konfiguratsioonifailidega.

koostööbänner

Seotud artiklid

Tarkvaraarendus

9 viga, mida vältida Java programmeerimisel

Milliseid vigu tuleks Java keeles programmeerimisel vältida? Järgnevas teoses vastame sellele küsimusele.

The Codest
Rafal Sawicki Java arendaja
Enterprise & Scaleups lahendused

Kuidas saab Java teie ettevõtet toetada?

Enne kui me alustame, tahaksin teile meelde tuletada üht olulist asja. Java ei ole ainult programmeerimiskeel.

Bartlomiej Kuczynski
Enterprise & Scaleups lahendused

Õige viis tipp Java arendajate leidmiseks

Ideaalse Java-arendaja leidmine võib olla keeruline ülesanne. Kuna turunõudlus selliste spetsialistide järele kasvab hämmastava kiirusega, võivad olemasolevad allikad talentide otsimiseks mõnikord tunduda...

The Codest
Grzegorz Rozmus Java üksuse juht

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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