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 υπάρχει ήδη') } 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 }) }, } } })() Γρήγορος οδηγός για το πώς να εκτελείτε Containers από δοκιμές - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2022-08-16
Ανάπτυξη λογισμικού

Γρήγορος οδηγός για το πώς να εκτελείτε Containers από δοκιμές

Bartlomiej Kuczyński

Μάθετε πώς να εκτελείτε δοκιμές φορμών κοντέινερ στο άρθρο μας σχετικά με τη Java, όπου ο ανώτερος προγραμματιστής μας στη java δείχνει όλη τη μαγεία.

Χρησιμοποιώ Spring Boot στο έργο για να μειώσετε την τυποποίηση. Τα δοχεία δοκιμών είναι ανεξάρτητα από Πλαίσιο Spring και μπορείτε να τα χρησιμοποιήσετε χωρίς αυτό.

Χρησιμοποιώ την έκδοση 1.17.3 του Testcontainers, αλλά μπορείτε να χρησιμοποιήσετε την πιο πρόσφατη. Δοκιμές με δοχείο Postgres.

Πρώτα ορίστε το δοχείο:

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() {
    // δεν κάνουμε τίποτα. Αυτό είναι κοινόχρηστο παράδειγμα. Αφήστε την JVM να χειριστεί αυτή τη λειτουργία.
  }
}

Στη συνέχεια, αρχικοποιήστε το πλαίσιο της εφαρμογής Spring. Παίρνουμε όλες τις ρυθμίσεις πηγής δεδομένων από την περίπτωση του δοχείου και τις ορίζουμε ως ρυθμίσεις της Spring:

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

Τέλος, μπορούμε να εκτελέσουμε τη δοκιμή μας και όλα θα ξεκινήσουν κάτω από την κουκούλα:

@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),
  }
}

Ή αν θέλουμε να εκτελέσουμε ανεξάρτητο τεστ της Spring, μπορούμε να χρησιμοποιήσουμε απευθείας το container:

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

Συνοψίζοντας

Τα Testcontainers είναι πολύ εύχρηστα εργαλεία που μας βοηθούν να δημιουργήσουμε δοκιμές ολοκλήρωσης που χρησιμοποιούν δοχεία Docker. Αυτό μας δίνει μεγαλύτερη ευελιξία και αυξάνει την ταχύτητα ανάπτυξης. Η σωστή ρύθμιση της διαμόρφωσης των δοκιμών μειώνει το χρόνο που απαιτείται για την επιβίβαση νέων προγραμματιστών. Δεν χρειάζεται να ρυθμίσουν όλες τις εξαρτήσεις, απλώς εκτελούν τις γραπτές δοκιμές με επιλεγμένα αρχεία διαμόρφωσης.

πανό συνεργασίας

Σχετικά άρθρα

Ανάπτυξη λογισμικού

9 λάθη που πρέπει να αποφύγετε κατά τον προγραμματισμό σε Java

Ποια λάθη πρέπει να αποφεύγονται κατά τον προγραμματισμό σε Java; Στο παρακάτω κομμάτι απαντάμε σε αυτό το ερώτημα.

The Codest
Rafal Sawicki Προγραμματιστής Java
Λύσεις Enterprise & Scaleups

Πώς η Java μπορεί να υποστηρίξει την επιχείρησή σας;

Πριν ξεκινήσουμε, θα ήθελα να σας υπενθυμίσω ένα σημαντικό πράγμα. Η Java δεν είναι μόνο μια γλώσσα προγραμματισμού.

Bartlomiej Kuczynski
Λύσεις Enterprise & Scaleups

Ο σωστός τρόπος για να βρείτε κορυφαίους προγραμματιστές Java

Η εύρεση του τέλειου προγραμματιστή Java μπορεί να είναι ένα δύσκολο έργο. Καθώς η ζήτηση της αγοράς για τέτοιους επαγγελματίες αυξάνεται με εκπληκτικό ρυθμό, οι διαθέσιμες πηγές για την αναζήτηση ταλέντων μπορεί μερικές φορές να φαίνονται...

The Codest
Grzegorz Rozmus Επικεφαλής μονάδας Java

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    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 etEstonian elGreek