window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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 }) }, } } })() Pikaopas konttien suorittamiseen testeistä - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2022-08-16
Ohjelmistokehitys

Pikaopas konttien suorittamisesta testeistä käsin

Bartlomiej Kuczyński

Opi, miten konttien lomaketestit ajetaan Javaan liittyvässä artikkelissamme, jossa vanhempi java-kehittäjämme näyttää kaiken taikuuden.

Käytän Spring Boot vuonna projekti vähentääkseen paisuttelukirjoittelua. Testisäiliöt ovat riippumattomia Spring Framework ja voit käyttää niitä ilman sitä.

Käytän Testcontainersin versiota 1.17.3, mutta voit vapaasti käyttää uusinta versiota. Testit Postgres-säiliön kanssa.

Määrittele ensin säiliö:

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 mitään. Tämä on jaettu instanssi. Anna JVM:n hoitaa tämä toiminto.
  }
}

Alusta sitten Spring-sovelluskonteksti. Haemme kaikki tietolähdekonfiguraatiot kontti-instanssista ja asetamme ne Spring-konfiguraatioiksi:

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()".
    );
  }
}

Lopuksi voimme suorittaa testimme, ja kaikki käynnistyy konepellin alla:

@SpringBootTest(webEnvironment = RANDOM_PORT)
@AutoConfigureTestDatabase(replace = NONE)
@ContextConfiguration(initializers = ContainerInit.class)
@Testikontit
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);
  }
}

Tai jos haluamme suorittaa Spring-riippumattoman testin, voimme käyttää säiliötä suoraan:

@Testikontit
class SimpleDbTest {

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

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

Yhteenveto

Testcontainerit ovat erittäin helppokäyttöisiä työkaluja, joiden avulla voimme luoda Docker-astioita käyttäviä integrointitestejä. Tämä antaa meille enemmän joustavuutta ja lisää kehitysnopeutta. Testikokoonpanon oikeaoppinen asettaminen vähentää uusien kehittäjien alustusaikaa. Heidän ei tarvitse määrittää kaikkia riippuvuuksia, vaan ajaa vain kirjoitetut testit valituilla konfiguraatiotiedostoilla.

yhteistyöbanneri

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

9 virhettä, joita kannattaa välttää Java-ohjelmoinnissa

Mitä virheitä tulisi välttää Java-ohjelmoinnissa? Seuraavassa kappaleessa vastaamme tähän kysymykseen.

Codest
Rafal Sawicki Java-kehittäjä
Yritys- ja skaalausratkaisut

Miten Java voi tukea yritystäsi?

Ennen kuin aloitamme, haluaisin muistuttaa teitä yhdestä tärkeästä asiasta. Java ei ole vain ohjelmointikieli.

Bartlomiej Kuczynski
Yritys- ja skaalausratkaisut

Oikea tapa löytää parhaat Java-kehittäjät

Täydellisen Java-kehittäjän löytäminen voi olla pelottava tehtävä. Koska tällaisten ammattilaisten markkinakysyntä kasvaa hämmästyttävää vauhtia, käytettävissä olevat lähteet lahjakkuuksien etsimiseen voivat joskus tuntua...

Codest
Grzegorz Rozmus Java-yksikön johtaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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