Maison > Java > javaDidacticiel > H tests amusants au printemps

H tests amusants au printemps

Patricia Arquette
Libérer: 2024-11-26 15:39:13
original
347 Les gens l'ont consulté

H весёлые тесты в Spring

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! ?

Pourquoi avons-nous besoin de H2 ?

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 :

  1. C'est lent.
  2. C'est risqué (supprimer quelque chose par accident ? On n'est pas comme ça !).
  3. C'est trop réaliste, et H2 est notre matrice, où tout est sous contrôle. H2 est votre code ami :
  • Léger.
  • Intégré.
  • Idéal pour les tests.

Configuration de application.properties : laissez H2 faire le travail à votre place

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

Copier après la connexion
Copier après la connexion

Qu’est-ce que tout cela signifie ?

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.

Ajout de dépendances

Pour Maven

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

Copier après la connexion
Copier après la connexion

Pour Gradle

implementation 'com.h2database:h2'
Copier après la connexion

Mise en place de tests

Écrivons maintenant nos tests. On active Spring, la magie des annotations et un peu d'amour pour le code.

Exemple : Ajouter un utilisateur

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

Copier après la connexion
Copier après la connexion

Test de l'ajout d'un utilisateur

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

Copier après la connexion
Copier après la connexion

Que se passe-t-il ici ?

@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.

Résultats

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal