Maintenant, après cette brève conceptualisation, nous pouvons nous plonger sur ce sujet et mieux comprendre les composants et le fonctionnement de l’architecture Junit.
Un projet architectural
Junit 5 est une évolution importante dans les versions précédentes, tant en termes d’architecture, de caractéristiques de programmation, d’expansion et de rationalité. Il se compose de trois modules principaux, dans chacune des tâches bien définies qui fonctionnent ensemble pour fournir une base de test fiable et adaptée. Comme nous le savons, Jurit 5 utilise l’architecture microker et avant de parler de qui les composants dont j’ai besoin pour expliquer cela Testage de l’API Îles. UN Testage de l’API Il s’agit de l’interface du plugin, le contrat du plugin de test, donc chaque plugin qui souhaite se connecter à seigler Il est nécessaire d’implémenter cette interface. Cela rend la base plus large qui permet au troisième trame de test de se connecter à seigler en portant le vôtre TesteurFournir une base de données d’exécution cohérente et stable. Nous pouvons maintenant explorer les plugins et les Mickers.
Junit Jupiter
Mettez le testeur avec de nouvelles fonctionnalités fournies par Junit 5. Il s’agit de l’API principale, qui contient toutes les annotations, utilitaires et interfaces utilisées pour écrire des tests modernes avec Junit 5. Il a un moteur qui annonce des annotations, organise et effectue des tests. Il a aussi API (junit-jupiter-api) Cela fournit des annotations Junit 5 modernes dont l’utilisateur final (testeur) Utilise pour créer des tests.
Junit Vintage
Il propose un testeur qui vous permet de lancer 3e Junit et 4 Junit sur la plate-forme Junit. Cette compatibilité en arrière est l’aspect le plus important car il facilite la migration progressive des projets héréditaires vers Junit 5 sans avoir à réécrire tous les tests existants. Il a un moteur qui proclame l’annotation, organise et effectue des tests mais ne fournit pas une seule annotation de l’API, il utilise ce qui a déjà existé dans JUnit 3/4.
Plate-forme Junit
Et enfin mais non moins important, Plate-forme Junit agit comme micro-carnetsDéterminer l’ensemble minimum d’abstractions et d’interfaces sur lesquelles Testeurs (Jupiter et Vintage) et d’autres outils peuvent être construits. Plate-forme Junit Définit une interface fiable et stable entre Junit et ses clients tels que les outils d’assemblage (Maven, niveleuse) et Identification (IDEA Intellij, Eclipse, Netbeans, Visual Studio Code), Promouvoir l’intégration et les tests. Cette conception contribue à la connexion de l’architecture, qui est un modèle de programmation agnostique. Plate-forme Junit A quelques packages, je mets en évidence moteur (junit-platform-engine) qui crée et gère le moteur de test et Installation du lanceur (junit-platform-launcher) Il lance des tests.
Détection de test de phase
Entrons maintenant la partie que je trouve surtout la plus intéressante: la détection des tests et le flux d’anomalisation. Aspect fondamental Architecture junit est une ouverture dynamique des testeurs. Le test par défaut est détecté pendant l’exécution en utilisant ServiceLoader Java’s Mécanisme. Ce mécanisme est une mise en œuvre directe du principe de l’extension JUnit 5 qui permet à différents testeurs (comme Jupiter, Ancient ou autres) Plate-forme Junit Code. Pour que l’objectif de test soit identifié ServiceLoader via SPI (Interface du fournisseur de services), un fichier qui vous permet de connecter dynamiquement les modules au fichier de moteur JAR. Je donne un exemple d’ancien et de Jupiter.
Exécution – Le point d’entrée principal du code client qui détecte et effectue des tests. Après cela, une demande d’ouverture, avec LauncherDiscoveryRequest Cela a accès aux informations requises pour détecter les tests et les conteneurs. Pour ce faire, nous devons filtrer avec des sélecteurs qui peuvent être le nom de la classe Java, de la méthode, du moyen de fichier ou de répertoire, etc. Plate-forme Junit C’est généralement, il est nécessaire de vous dire exactement ce que vous voulez courir. Vous trouverez ci-dessous un exemple de son fonctionnement, adapté avec Code source Junit:
LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(
selectPackage("org.example.user"),
selectClass("org.example.payment.PaymentTests"),
selectClass(ShippingTests.class),
selectMethod("org.example.order.OrderTests#test1")
)
.build();
À partir de maintenant, le chèque est effectué pour savoir s’il y a des tests liés à Le plus conçu Dans la demande, à travers discover Une méthode appelée Plate-forme JunitEt puis un Test de test de l’arborescence Construit où chaque nœud est un conteneur (comme une classe) ou un test (par exemple, méthode). Tests organisés dans un arbre hiérarchique qui sert de représentation agnostique Testeur. La façon dont les tests sont déterminés en interne Testeur distrait. Je pense que c’est incroyable. UN seigler interagit avec cette structure unique quelle que soit l’origine du test.
TestDescriptor descriptor = engine.discover(request, uniqueId);
Après la phase d’ouverture et de construction TestPlan (arbre d’essai), execute La méthode est conçue pour effectuer les tests présentés par la racine TestDescripteur Et ses enfants. C’est à ce stade que la logique des performances, caractéristique de chaque base de test, est lancée. Il signale également les progrès et les résultats TestExecutionListenerrecevoir des notifications sur les progrès et les résultats des tests, provoquant des méthodes telles que:
- TestPlanExecutionStarted (Plan d’essai🙂 On l’appelle lorsque les tests commencent.
- Exuturewstarted (Test🙂 Causé lorsque le test ou l’exécution du conteneur commence.
- Eveluluefined (Testidentifier Testidentifier, TestExectionResut TestExecutionResult): Appelé lorsque le test ou l’exécution du conteneur est terminé, quel que soit le résultat.
- Reporting-publication (Testidentifier Testidentifier, rapport de disques🙂 Appelé lors de la publication de rapports supplémentaires pour un testidentificateur particulier.
L’exécution écoute ces événements et les rapports mis à jour en envoyant des IDE, des terminaux, un rapport HTML, etc.
Avec cela, nous pouvons comprendre le flux des annotations de test du jurit 5.
Le testeur utilise l’annotation dans son code, qui est une métadonnée du temps de pliage. Les annotations fournissent org.junit.jupiter.api :
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;...
@Test
void addition() {
assertEquals(2, calculator.add(1, 1));
}
Après que ce résumé est exprimé et lu junit-jupiter-engine Le module, qui est Jupiter, est un test. Il analyse les classes avec un affichage pour trouver les méthodes annotées @Testet ainsi de suite le moteur transforme ces méthodes en TestDescriptordécrire ce que vous devez faire. Chaque test, classe et méthode devient le nœud d’exécution, puis le test initié. Plate-forme Junit Orchestre et rapports sur les événements qui ont lieu pendant le test. Le testeur peut suivre les événements réels via l’interface graphique ou le terminal, selon l’IDE.
Conclusion
Junit 5 est une promotion architecturale importante du cadre de test Java. Sa modularité exprimée dans la division entre la plate-forme Junit, Junit Jupiter et Junit Vintage n’est pas seulement un choix de conception, mais aussi la principale solution pour les problèmes d’expansion et de rationalité considérés dans les versions précédentes. L’architecture JUnit 5 est un témoignage d’une conception réussie qui avant la flexibilité, la compatibilité et l’écosystème de tests fiables et adaptés.
Vous avez la meilleure compréhension Architecture Junit 5? Je ne peux pas entrer plus profondément dans l’architecture, je n’ai pas assez de connaissances encoreMais j’espère que cela lui a donné un examen et comment le test est le test. Avez-vous des questions ou trouvez-vous des erreurs? Faites-moi savoir le commentaire ci-dessous. Avant la réunion plus tard! Ðÿ ‘‹
Game Center
Game News
Review Film
Rumus Matematika
Anime Batch
Berita Terkini
Berita Terkini
Berita Terkini
Berita Terkini
review anime

