亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Table des matières
Pourquoi utiliser Junit 5 Mockito?
1. Construction de l'environnement de base
2. Utilisez Mockito pour simuler les objets de dépendance
écrire des classes de test
Description des points clés:
3. Vérification du comportement
4. Gérer les exceptions et les situations de limite
5. Conseils et meilleures pratiques
Maison Java javaDidacticiel Tests et moqueurs unitaires à Java avec Junit 5 et Mockito

Tests et moqueurs unitaires à Java avec Junit 5 et Mockito

Jul 29, 2025 am 01:20 AM
java Tests unitaires

Utilisez JUnit 5 et Mockito pour isoler efficacement les dépendances pour les tests unitaires. 1. Créer des objets simulés via @Mock, @InjectMocks Inject L'instance testée, @ExtendWith Activer la Mockito Extension; 2. Utiliser quand (). ThereTreturn () pour définir le comportement de simulation, vérifiez () pour vérifier le nombre d'appels et de paramètres de méthode; 3. Peut simuler les scénarios d'exception et vérifier la gestion des erreurs; 4. Recommander l'injection du constructeur, éviter une sur-simulation et maintenir l'atomicité des tests; 5. Utiliser Asssertall () pour fusionner les affirmations, et @nest organise des scénarios de test pour améliorer la maintenabilité et la fiabilité des tests.

Tests et moqueurs unitaires à Java avec Junit 5 et Mockito

Les tests unitaires et la moquerie sont des moyens importants pour garantir la qualité du code en Java, et Junit 5 et Mockito sont la combinaison la plus populaire de cadres de test. Ils travaillent ensemble pour isoler efficacement la logique commerciale, en particulier pour les scénarios qui reposent sur des services externes, des bases de données ou des objets complexes.

Tests et moqueurs unitaires à Java avec Junit 5 et Mockito

Pourquoi utiliser Junit 5 Mockito?

JUnit 5 est un cadre de test unitaire grand public en Java, offrant des modèles d'annotation plus flexibles, des mécanismes d'extension et des fonctions d'assertion. Mockito est un framework moqueur puissant qui vous permet de créer et de configurer des objets "faux" pour remplacer les dépendances réelles, en vous concentrant ainsi sur le test du comportement des classes cibles.

La combinaison des deux vous permettra de:

Tests et moqueurs unitaires à Java avec Junit 5 et Mockito
  • Isoler le code testé à partir des dépendances externes
  • Vérifiez le nombre d'appels et de paramètres de méthode
  • Simuler des exceptions et des conditions aux limites
  • Améliorer la maintenabilité des tests et la vitesse d'exécution

1. Construction de l'environnement de base

Assurez-vous d'abord que le projet présente les dépendances JUnit 5 et Mockito. Si vous utilisez Maven, ajoutez ce qui suit à pom.xml :

 <dépendances>
    <! - Junit 5 ->
    <dépendance>
        <groupId> org.junit.jupiter </rompgroud>
        <ArtefactId> JUnit-Jupiter </ ArfactId>
        <version> 5.10.0 </ version>
        <ccope> Test </ccope>
    </Dependance>

    <! - Mockito ->
    <dépendance>
        <groupId> org.mockito </rombandid>
        <ArtefactId> Mockito-core </letefactive>
        <version> 5.7.0 </ version>
        <ccope> Test </ccope>
    </Dependance>

    <! - Prise en charge de Mockito Junit Jupiter (facultatif, utilisé pour l&#39;initialisation automatique de l&#39;annotation @mock) ->
    <dépendance>
        <groupId> org.mockito </rombandid>
        <ArtefactId> mockito-junit-jupiter </ arfactive>
        <version> 5.7.0 </ version>
        <ccope> Test </ccope>
    </Dependance>
</DENDENDENCES>

Assurez-vous également d'utiliser une configuration de build qui prend en charge JUnit 5 (tel que SureFire Plugin version> = 2.22.0).

Tests et moqueurs unitaires à Java avec Junit 5 et Mockito

2. Utilisez Mockito pour simuler les objets de dépendance

Supposons que nous ayons un service d'ordre de service OrderService qui repose sur une interface de paiement de paiement PaymentGateway passerelle:

 Interface publique Paymentgateway {
    Charge booléenne (double montant);
}

classe publique OrderService {
    PAYS PAYS PAYS PAYSGATE PAYSGATEWAY;

    ORDERSERVICE PUBLIQUE (PAYSGATEWAY PAYSGATEWAY) {
        this.paymentgateway = PaymentGateway;
    }

    Public Boolean Processorder (double quantité) {
        if (montant <= 0) renvoie false;
        Retour PaymentGateway.Charger (montant);
    }
}

Nous voulons tester OrderService.processOrder() mais ne voulons pas appeler réellement le système de paiement. Pour le moment, vous pouvez utiliser Mockito pour créer un PaymentGateway simulé.

écrire des classes de test

 import org.junit.jupiter.api.test;
import org.mockito.injectmocks;
import org.mockito.mock;
Importer Static org.junit.jupiter.api.Assesertions. *;
importer statique org.mockito.mockito. *;

classe OrderServiceTest {

    @Se moquer
    PAYS PAYSGATE PAYS PAYSGATEWAY;

    @Injectmocks
    Commande d&#39;ordre privé;

    // doit coopérer avec MockitoExtension pour initialiser automatiquement @Mock et @InjectMocks
    @ org.junit.jupiter.api.extension.extendWith (mockitoextension.class)
    classe statique imbriquée {}

    @Test
    void doit-ilturfalse_whenamountisinvalid () {
        // appelle la méthode sous test booléen result = orderservice.processOrder (-100);

        // Affirmer le résultat AssertFalse (résultat);

        // Vérifiez que la passerelle de paiement n&#39;est pas appelée vérification (PaymentGateway, jamais ()). Charge (anyDouble ());
    }

    @Test
    void doit-onTrue_WhenPaymentsUCceeds () {
        // Simuler le comportement de dépendance lorsque (PAYSGATEWAY.CHARGE (100.0)). ThereAtturn (true);

        // Exécuter Boolean Result = OrderService.ProcessOrder (100.0);

        // affirmer AssertTrue (résultat);
        Vérifier (PAYSGATEWAY) .Charger (100.0);
    }

    @Test
    void doit-onTurnfalse_WhenPaymentFails () {
        quand (PaymentGateway.Charger (100.0)). ThereAtturn (false);

        Résultat booléen = OrderService.ProcessOrder (100,0);

        AssertFalse (résultat);
        Vérifier (PAYSGATEWAY) .Charger (100.0);
    }
}

Description des points clés:

  • @Mock : Créez un objet simulé (Mock)
  • @InjectMocks : créez une instance de classe cible et injectez automatiquement les champs @Mock étiquetés (via le constructeur ou l'injection de champ)
  • @ExtendWith(MockitoExtension.class) : Activez l'extension Junit de Mockito pour initialiser automatiquement les annotations
  • when(...).thenReturn(...) : Définissez la valeur de retour de la méthode de simulation
  • verify(...) : Vérifiez si une méthode a été appelée, ainsi que le nombre d'appels, de paramètres, etc.

3. Vérification du comportement

En plus d'affirmer la valeur de retour, vous pouvez également vérifier que la méthode est appelée correctement. Par exemple:

 @Test
vide doit être titulaire de bord
    quand (PaymentGateway.Charger (50.0)). ThereAtturn (true);

    ORDERSERVICE.PROCESSORSE (50.0);

    // Vérifiez que la méthode de charge est appelée une fois et que le paramètre est 50.0
    Vérifier (PaymentGateway, Times (1)). Charge (Eq (50.0));
}

Autres méthodes de vérification courantes:

  • never() : jamais appelé
  • atLeastOnce() : au moins une fois
  • timeout(100) : appelé dans un délai spécifié (pour asynchrone)
  • inOrder(...) : Vérifiez l'ordre d'appel
 // Exemple: vérifiez l&#39;ordre d&#39;appel inOrder inOrder = inOrder (PaymentGateway);
inOrder.Verify (PaymentGateway) .Charger (30.0);
inOrder.Verify (PaymentGateway) .Charger (20.0);

4. Gérer les exceptions et les situations de limite

Vous pouvez avoir les exceptions de lancement d'objet simulé et tester la logique de gestion des erreurs:

 @Test
void sihandlepaymentFailureDueToException () {
    quand (PaymentGateway.Charger (100.0)). ThentHrow (nouveau RuntimeException ("Erreur de réseau"));

    assertThrows (runtimeException.class, () -> {
        OrderService.ProcessOrder (100.0);
    });

    Vérifier (PAYSGATEWAY) .Charger (100.0);
}

Vous pouvez également utiliser doThrow() pour coopérer avec doReturn() pour gérer des méthodes void ou des scénarios spéciaux.


5. Conseils et meilleures pratiques

  • évitez la suresimulation : simulez uniquement les dépendances qui ont vraiment besoin d'isolement et ne simulez pas l'intégralité du lien
  • Injection de constructeur préférée : des objets simulés faciles à passer pendant les tests
  • Maintenir l'atomicité du test : un test valide uniquement un comportement
  • Affirmation par lots utilisant assertAll()
 @Test
void multipleassertions () {
    Quand (Paytgateway.Charger (100.0)). ThereAtturn (true);

    Résultat booléen = OrderService.ProcessOrder (100,0);

    Assertall (
        () -> assertTrue (résultat),
        () -> Vérifier (PaymentGateway) .Charger (100.0)
    ));
}
  • Utilisez la classe de test @Nested pour organiser différents scénarios:
 @Nest
classe WhenamountIspositive {
    @Test
    VOID SOUHNACHARGEPAYMENTGATEWAY () {...}
}

Fondamentalement, c'est tout. La combinaison de Junit 5 Mockito rend les tests unitaires Java intuitifs et puissants. La clé est de comprendre le ?comportement de test? plut?t que la ?mise en ?uvre du test? et de contr?ler les dépendances via Mock pour s'assurer que le test est rapide, stable et reproductible.

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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Laravel Lazy Chargement vs chargement avide Laravel Lazy Chargement vs chargement avide Jul 28, 2025 am 04:23 AM

Le chargement paresseux uniquement les requêtes lors de l'accès aux associations peut facilement entra?ner des problèmes n 1, ce qui convient aux scénarios où les données associées ne sont pas déterminées si elles sont nécessaires; 2. Utilisations de chargement d'urgence avec () pour charger les données associées à l'avance pour éviter N 1 requêtes, ce qui convient aux scénarios de traitement par lots; 3. Le chargement d'urgence doit être utilisé pour optimiser les performances, et n 1 des problèmes peuvent être détectés via des outils tels que Laraveldebugbar, et le $ avec l'attribut du modèle est soigneusement utilisé pour éviter les frais généraux de performances inutiles.

Intégration de PHP aux modèles d'apprentissage automatique Intégration de PHP aux modèles d'apprentissage automatique Jul 28, 2025 am 04:37 AM

UseArestapitobridgePhpandmlModelsByrunningTheModelinpythonviaflaskorfastapiandCallingitfrompsingCurlorBuzzle.2.Runpythonscripts est ventilateur

Exemple de requête SQL Laravel Raw Exemple de requête SQL Laravel Raw Jul 29, 2025 am 02:59 AM

Laravel prend en charge l'utilisation des requêtes SQL natives, mais la liaison des paramètres doit être préférée pour assurer la sécurité; 1. Utilisez DB :: SELECT () pour exécuter SELECT Queries avec la liaison des paramètres pour empêcher l'injection SQL; 2. Utilisez DB :: Update () pour effectuer des opérations de mise à jour et renvoyer le nombre de lignes affectées; 3. Utilisez db :: insert () pour insérer des données; 4. Utilisez DB :: Delete () pour supprimer les données; 5. Utilisez DB :: Instruction () pour exécuter des instructions SQL sans ensembles de résultats tels que Create, Alter, etc.; 6. Il est recommandé d'utiliser Whereraw, Selectraw et d'autres méthodes dans QueryBuilder pour combiner les expressions natives pour améliorer la sécurité

Programmation réactive en Java avec Project Reactor et Spring Webflux Programmation réactive en Java avec Project Reactor et Spring Webflux Jul 29, 2025 am 12:04 AM

La programmation réactive met en ?uvre des services de non-blocage à faible latence et à faible latence en Java via Projectaactor et SpringWebflux. 1. ProjectAacteur fournit deux types de noyaux: mono et flux, prend en charge le traitement déclaratif des flux de données asynchrones et convertis, filtres et autres opérations via des cha?nes d'opérateurs; 2. SpringWebflux est construit sur Reactor, prend en charge deux modèles de programmation: l'annotation et fonctionnelle. Il fonctionne sur des serveurs non bloquants tels que Netty et peut gérer efficacement un grand nombre de connexions simultanées; 3. L'utilisation du réacteur WebFlux peut améliorer la capacité de concurrence et l'utilisation des ressources dans les scénarios à forte intensité d'E / S et prend naturellement SSE et WebSO.

Authentification et autorisation Java avec JWT Authentification et autorisation Java avec JWT Jul 29, 2025 am 12:07 AM

JWT est une norme ouverte pour une transmission s?re d'informations. En Java, l'authentification et l'autorisation peuvent être réalisées via la bibliothèque JJWT. 1. Ajouter des dépendances JJWT API, ILT et Jackson; 2. Créez une classe d'outils JWTutil pour générer, analyser et vérifier les jetons; 3. écrivez JWTFilter intercepte les demandes et vérifiez les Bearertokens dans l'en-tête d'autorisation; 4. Enregistrer le filtre à Springboot pour protéger le chemin spécifié; 5. Fournir une interface de connexion pour renvoyer JWT après la vérification de l'utilisateur; 6. L'interface protégée obtient l'identité et les r?les de l'utilisateur en analysant le jeton pour le contr?le d'accès, et réalise finalement un mécanisme de sécurité apatride et extensible, adapté aux systèmes distribués.

Passez par l'exemple des génériques Passez par l'exemple des génériques Jul 29, 2025 am 04:10 AM

Les génériques GO sont pris en charge depuis 1.18 et sont utilisés pour écrire du code générique pour le type de type. 1. La fonction générique imprimslice [tany] (s [] t) peut imprimer des tranches de tout type, telles que [] int ou [] cha?ne. 2. Grace au nombre de contraintes de type, les limites des types numériques tels que int et float, sum [tnumber] (tranche [] t) t La sommation s?re est réalisée. 3. La bo?te de type générique de structure [tany] struct {Valuet} peut encapsuler n'importe quelle valeur de type et être utilisée avec le constructeur newbox [tany] (VT) * Box [t]. 4. Ajouter SET (VT) et Get () T Méthodes T à boxer [t] sans

Exemple fixe CSS Table-Layout Exemple fixe CSS Table-Layout Jul 29, 2025 am 04:28 AM

Table-Layout: Fixe obligera la largeur de la colonne de table à déterminer par la largeur de la cellule de la première ligne pour éviter le contenu affectant la disposition. 1. Définissez la table de table: fixe et spécifiez la largeur du tableau; 2. Définissez le rapport de largeur de colonne spécifique pour la première ligne th / td; 3. Utilisez White-Space: Nowrap, débordement: Hidden et Text-Overflow: EllipSis pour contr?ler le débordement du texte; 4. Applicable à la gestion des antécédents, aux rapports de données et à d'autres scénarios qui nécessitent une disposition stable et un rendu haute performance, qui peuvent effectivement empêcher la gigue de mise en page et améliorer l'efficacité du rendu.

Tests et moqueurs unitaires à Java avec Junit 5 et Mockito Tests et moqueurs unitaires à Java avec Junit 5 et Mockito Jul 29, 2025 am 01:20 AM

Utilisez JUnit5 et Mockito pour isoler efficacement les dépendances pour les tests unitaires. 1. Créez un objet simulé via @Mock, @InjectMocks Inject L'instance testée, @ExtendWith Activer la Mockito Extension; 2. Utiliser quand (). ThereraTurn () pour définir le comportement de simulation, vérifiez () pour vérifier le nombre d'appels et de paramètres de méthode; 3. Peut simuler les scénarios d'exception et vérifier la gestion des erreurs; 4. Recommander l'injection du constructeur, éviter une sur-simulation et maintenir l'atomicité des tests; 5. Utiliser Asssertall () pour fusionner les affirmations, et @nest organise les scénarios de test pour améliorer la maintenabilité et la fiabilité des tests.

See all articles