Bonjour, cher guerrier Java ! ? Si vous êtes ici, il est temps de vous lancer dans les tests et de prouver que votre code fonctionne mieux que ce que promettent les spécialistes du marketing. Aujourd'hui, nous allons parler de tester la logique au Spring à l'aide d'une base de données H2. Allons-y! ?
Imaginez : vous écrivez le service le plus cool, mais vous avez peur que votre logique métier vive dans un monde d'illusions. Vous ne voulez pas que les tests pilotent la vraie base de données car :
Avant de commencer, préparons notre petit monde de test douillet. Pour ce faire, nous écrirons les paramètres nécessaires dans src/test/resources/application.properties. Voilà :
# Подключаем H2 spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password # Убедимся, что Hibernate всё за нас делает spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.url: indique que nous souhaitons utiliser une base de données "en mémoire" (mem:testdb), qui disparaîtra dès que nous désactiverons les tests.
DB_CLOSE_DELAY=-1 : la base de données vivra jusqu'à la fin de la JVM (vive la stabilité !).
spring.jpa.hibernate.ddl-auto=create-drop : nous créons une base de données lors de l'exécution des tests, la supprimons après. La propreté est la clé du succès.
Pour Maven
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
Pour Gradle
implementation 'com.h2database:h2'
Écrivons maintenant nos tests. On active Spring, la magie des annotations et un peu d'amour pour le code.
Disons que nous avons une entité Utilisateur :
# Подключаем H2 spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password # Убедимся, что Hibernate всё за нас делает spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
Test de l'ajout d'un utilisateur
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
@SpringBootTest : Relever le contexte Spring (tout est comme en production, mais sécurisé).
@Autowired : Injection de dépendances parce que nous le méritons.
UserRepository : votre référentiel fonctionne comme au combat.
Vous savez désormais comment créer de l'amitié entre Spring, H2 et tests. Ces exemples sont la clé d’un monde où il n’y a pas de bugs et où les tests fonctionnent du premier coup. N'oubliez pas : les tests n'améliorent pas votre code, mais ils vous aident à dormir sur vos deux oreilles. Bonne chance! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!