Configurer les tests d'intégration
Configurez votre projet pour prendre en charge les tests d'intégration, notamment la gestion des environnements et des dépendances de test.
Configurer les tests d'intégration est une leçon Testing Mastery: JUnit, Mockito & Integration Tests gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Testing Mastery: JUnit, Mockito & Integration Tests, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Testing Mastery: JUnit, Mockito & Integration Tests comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Integration Test Setup Intro
Welcome to setting up Integration Tests! After learning about the difference between unit and integration tests, it's time to prepare our project.
Proper setup is crucial for integration tests to run reliably. It ensures your tests are isolated, repeatable, and don't interfere with your development environment.
Separate Source Folders
The first step is to clearly separate your integration tests from your unit tests. This helps organize your codebase and allows build tools to treat them differently.
- Unit Tests: Typically reside in
src/test/java. - Integration Tests: Often placed in a dedicated folder like
src/it/javaorsrc/integrationTest/java.
This separation makes it easier to run them at different stages of your build process.
Maven: Configure IT Sources
If you're using Maven, you need to tell your pom.xml to recognize the new integration test source folder. The build-helper-maven-plugin is commonly used for this.
It adds src/it/java as a test source directory, allowing Maven to compile your integration tests.
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>add-integration-test-sources</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/it/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</project>Gradle: Configure IT Sources
For Gradle users, defining a separate source set for integration tests is straightforward. This allows you to compile and run integration tests independently.
The example below shows how to define an integrationTest source set and configure its dependencies.
sourceSets {
integrationTest {
java.srcDir 'src/it/java'
resources.srcDir 'src/it/resources'
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
configurations {
integrationTestImplementation.extendsFrom testImplementation
integrationTestRuntimeOnly.extendsFrom testRuntimeOnly
}
task integrationTest(type: Test) {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
shouldRunAfter test
}
check.dependsOn integrationTestEssential Test Dependencies
Integration tests often require specific dependencies that unit tests might not. These can include:
- In-memory databases: Like H2 or HSQLDB for fast, isolated database testing.
- Testcontainers: A library to spin up real service containers (databases, message queues) in Docker.
- Web testing frameworks: For testing web layers (e.g., Spring's
spring-test,MockMvc).
Add these to your test or integration test dependency scope.
Maven Failsafe Plugin
While Maven's Surefire plugin runs unit tests, the Maven Failsafe Plugin is designed for integration tests.
It executes tests during the integration-test and verify phases, ensuring that any setup (like starting a server) happens before tests run and teardown occurs afterward.
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.2.5</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</project>Dedicated Test Configuration
Integration tests often need a different configuration than your main application or unit tests. For example, they might connect to a specific test database or use different external service URLs.
It's good practice to use separate configuration files (e.g., application-it.properties for Spring Boot) that override default settings during integration test execution.
Preparing the Test Environment
Before integration tests run, you often need to prepare the environment. This could involve:
- Starting an embedded database.
- Spinning up Docker containers for external services using Testcontainers.
- Initializing specific test data.
JUnit's @BeforeAll and @AfterAll annotations are perfect for setting up and tearing down resources once per test class.
Environment Setup Example
Here's a simple example demonstrating how you might use @BeforeAll to 'prepare' a resource for your integration tests. This setup runs once before all tests in the class.
Try running this example to see the setup message.
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class SimpleIntegrationSetupTest {
@BeforeAll
static void setupEnvironment() {
System.out.println("--- Setting up test environment (e.g., starting a database) ---");
// In a real scenario, you'd start a container or connect to a test DB here.
}
@AfterAll
static void tearDownEnvironment() {
System.out.println("--- Tearing down test environment (e.g., stopping a database) ---");
// In a real scenario, you'd stop containers or clean up resources here.
}
@Test
void testSomethingIntegrated() {
System.out.println(" Running an integration test...");
// Your actual integration test logic would go here.
// assert something...
}
public static void main(String[] args) {
// This main method allows the snippet to be runnable.
// In a real project, tests are run by build tools.
System.out.println("This is a placeholder for running the test.");
// You would typically use JUnit's API to run tests programmatically if not using Maven/Gradle.
}
}Running ITs Question
You've set up your project for integration tests using Maven. Which Maven command is typically used to execute these tests using the Failsafe plugin?
Recap: Structured Testing
Great job! You've learned how to set up your project for integration tests.
- We separate integration tests into their own source folders (e.g.,
src/it/java). - Build tools like Maven (with
build-helper-maven-pluginandmaven-failsafe-plugin) or Gradle are configured to recognize and run them. - Specific dependencies and dedicated configuration files ensure isolated test environments.
@BeforeAlland@AfterAllhelp manage resource setup and teardown.
This robust setup provides a solid foundation for writing effective integration tests!
Questions Fréquemment Posées
La leçon « Configurer les tests d'intégration » est-elle gratuite ?
Oui — le texte complet de « Configurer les tests d'intégration » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Testing Mastery: JUnit, Mockito & Integration Tests, passe à CoddyKit PRO. Le cours Testing Mastery: JUnit, Mockito & Integration Tests comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Configurer les tests d'intégration » ?
Configurez votre projet pour prendre en charge les tests d'intégration, notamment la gestion des environnements et des dépendances de test. Tu pratiques Testing Mastery: JUnit, Mockito & Integration Tests avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Testing Mastery: JUnit, Mockito & Integration Tests ?
Aucune expérience préalable n'est requise. Testing Mastery: JUnit, Mockito & Integration Tests sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Configurer les tests d'intégration » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Testing Mastery: JUnit, Mockito & Integration Tests ?
Oui. Chaque leçon Testing Mastery: JUnit, Mockito & Integration Tests inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Tests unitaires et tests d'intégration
- Configurer les tests d'intégration
- Tester les interactions avec la base de données
- Tester des API externes avec WireMock