Tests unitaires
Les tests unitaires sont lancés automatiquement par Maven lors de la construction de l'application. La librairie présente dans la librairie /libs/test propose plusieurs méthodes communes aux différents modules simplifiant la mise en place des tests unitaires.
Chaque classe de test unitaire utilisant les injections de dépendance doit commencer avec ces annotations
@QuarkusTest
@TestProfile(CustomTestProfile.class)
public class FeederTest {
}
Annotation @QuarkusTest
L'annotation @QuarkustTest permet de démarrer l'application Quarkus dans un environnement de test pour exécuter des tests qui nécessitent une interaction avec des composants internes de l'application.
A vec l'annotation @QuarkusTest, on peut bénéficier du :
-
Démarrage du contexte Quarkus : L'annotation démarre l'application Quarkus dans un environnement de test, avec tous les composants configurés (par exemple, bases de données, injections de dépendances, services, etc.). Cela permet de tester des éléments tels que les services, les contrôleurs REST, ou d'autres parties du système, comme si l'application était en cours d'exécution.
-
Injection de dépendances : Avec
@QuarkusTest
, vous pouvez bénéficier de l'injection de dépendances (CDI) dans vos classes de test. Cela signifie que les objets comme les beans, services ou autres composants peuvent être injectés et utilisés directement dans les tests.
Annotation @TestProfile
L'annotation @TestProfile
dans Quarkus est utilisée pour spécifier un profil de configuration spécifique lors de l'exécution de tests. Elle permet d'activer un ensemble particulier de configurations (comme des propriétés d'application) lorsque des tests sont exécutés, ce qui est utile pour isoler les paramètres de test du reste de l'application.
Fonctions principales de @TestProfile
:
-
Changer les configurations pour les tests :
- Chaque application Quarkus peut avoir différents profils de configuration (comme
dev
,test
,prod
), avec des propriétés spécifiques. En utilisant@TestProfile
, vous pouvez activer un profil personnalisé avec des configurations spécifiques pour vos tests d'intégration, par exemple, une base de données en mémoire ou des services factices.
- Chaque application Quarkus peut avoir différents profils de configuration (comme
-
Isoler les environnements de test :
- Il permet d'isoler les tests d'un profil de production ou d'un profil de développement, en s'assurant que les configurations de tests n'interfèrent pas avec les autres environnements.
-
Personnalisation des scénarios de test :
- Vous pouvez définir plusieurs profils de tests pour des scénarios spécifiques. Par exemple, vous pouvez avoir un profil de test pour les tests unitaires, un autre pour les tests d'intégration, et ainsi de suite.
Utilisation
Pour utiliser @TestProfile
, vous devez d'abord créer une classe qui implémente l'interface io.quarkus.test.junit.QuarkusTestProfile
. Dans cette classe, vous définissez les configurations ou comportements spécifiques au profil de test pour Quarkus et Open ENT.
public class CustomTestProfile implements QuarkusTestProfile {
@Override
public Map<String, String> getConfigOverrides() {
return Map.of(
"quarkus.vertx.cluster.clustered", "false",
"openent.cwd", "."
// Override neo4j uri if you want to use specific database
//"quarkus.neo4j.uri", "bolt://localhost:7474"
);
}
}
- Override des propriétés : Vous pouvez surcharger des propriétés de configuration via la méthode
getConfigOverrides
, par exemple pour changer l'URL de la base de données. - Activation d'alternatives : Vous pouvez activer ou désactiver certaines alternatives (par exemple, des beans spécifiques) pour vos tests via la méthode
getEnabledAlternatives
. - Chargement de scénarios spécifiques : Le profil de test permet de configurer des comportements ou des services factices pour tester des cas particuliers de manière isolée.
Si aucun profil n'est explicitement défini avec l'annotation @TestProfile
, Quarkus utilise par défaut le profil de test appelé test. Les propriétés spécifiques à ce profil peuvent être configurées dans un fichier application-test.properties.
Annotation @RunOnVertxContext
L'annotation @RunOnVertxContext dans Quarkus est utilisée pour exécuter des tests au sein du contexte de Vert.x, afin d'assurer l'exécution sur le thread événementiel de Vert.x.
@Test
@RunOnVertxContext
public void testShouldImportAaf() {
}
Annotation JUnit 4 et JUnit 5
Dans les classes Java de test, il est préférable d'utiliser maintenant JUnit 5.
L'annotation @Test
doit donc provenir du package org.junit.jupiter.api
et pas org.junit
.
Dans l'environnemet de développemet de Jetbrains, Idea détecte automatiquement si l'execution doit être réalisé avec JUnit 4 et Junit5.
Avec l'annotation org.junit
, la classe setUp avec l'annotation @BeforeClass
sera executé alors que la classe setUp avec l'annotation @BeforeAll
sera executé avec JUnit 5.