Table des matières
Liste de quatre approches de base pour tester les méthodes privées
1. Ne pas tester les méthodes privées (Tests indirects)
2. Donner l'accès au package de méthode
3. Utilisez une classe de test imbriquée
4. Utilisez la réflexion
Conclusion
Maison Java javaDidacticiel Méthodes privées de test Java

Méthodes privées de test Java

Aug 30, 2024 pm 04:23 PM
java

Les méthodes privées de test Java sont définies comme les méthodes ayant un modificateur d'accès privé et sont limitées à un accès dans la classe de définition uniquement et ne sont pas visibles dans leur classe enfant, car elles ne sont pas éligibles au remplacement, cependant, nous pouvons définir une méthode portant le même nom dans la classe enfant et pouvant accéder à la classe parent, peut également tester les méthodes privées en effectuant un accès au package de méthodes privées, ce qui nous permet de les tester directement avec JUnit à partir des classes de test du même package mais le test de les méthodes privées dans SuiteRunner sont plus faciles à tester dans JUnit.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Liste de quatre approches de base pour tester les méthodes privées

Que vous utilisiez JUnit ou SuiteRunner, nous avons quatre approches de base pour tester les méthodes privées,

1. Ne pas tester les méthodes privées (Tests indirects)

Parfois, la méthode privée effectue une tâche très compliquée et le test doit être très bien testé, nous ne voulons donc pas que les utilisateurs aient accès à ces méthodes, car les méthodes privées doivent être protégées.
Les méthodes privées n'ont pas pu tester indirectement mais seulement leur effet sur les méthodes publiques qui les appellent. Tester des méthodes privées peut indiquer que ces méthodes sont déplacées vers une autre classe qui facilite/supporte la réutilisabilité.

Si nous extrayons la méthode privée à partir de laquelle fonctionnent déjà et a une bonne couverture de tests unitaires, alors celle qui existe déjà dans un test unitaire est suffisante pour tester, nous n'avons donc pas besoin d'écrire plus de tests unitaires pour les méthodes privées. Mais si nous voulons écrire la méthode privée avant sa méthode appelante et que nous voulons écrire les tests unitaires avant d'écrire la méthode privée.

Exemples

public class testClass
{
private String testMethod(String s)
{
return s;
}
}

L'exemple ci-dessus sert uniquement à tester les méthodes privées. Si nous avons une classe « testClass », alors elle est appelée par une méthode comme « testMethod() », alors cette méthode est privée et en passant une chaîne ou un objet, nous pouvons renvoyer la valeur.

2. Donner l'accès au package de méthode

Donner l'accès aux packages de méthodes fonctionne bien pour tester des méthodes privées avec JUnit, mais cela est légèrement coûteux. Lorsqu'une méthode a un modificateur d'accès privé, elle fait partie de l'implémentation de la classe. Nous pouvons ignorer la méthode si nous essayons simplement d'utiliser une classe d'une autre classe dans le package et nous pouvons le comprendre en utilisant la méthode d'accès au package. En outre, le test des méthodes non publiques des classes peut être effectué à l'aide du package d'accès aux méthodes.
La première façon de rendre le package de méthode privé sans modificateur d'accès et de placer les tests dans le même package, c'est une méthode courante mais quand même, si nous voulons un autre code, la deuxième façon est de rendre la méthode publique.

3. Utilisez une classe de test imbriquée

La troisième chose à propos du test des méthodes privées en Java est l'utilisation d'une classe de test imbriquée, cela peut être fait en imbriquant une classe statique dans la classe de production testée. La classe imbriquée a accès au membre privé de sa classe englobante, elle pourrait invoquer directement les méthodes privées. La classe statique elle-même pourrait être un accès au package, lui permettant de faire partie du test de la boîte blanche.
L'inconvénient de cette classe de test imbriquée est que, si nous ne voulons pas que la classe imbriquée soit accessible dans le fichier JAR de notre département, nous devons alors effectuer un travail supplémentaire pour l'extraire. Cela peut être problématique car les analystes qualité apporteront des modifications au code source.

4. Utilisez la réflexion

Venons maintenant à la prochaine utilisation de la réflexion. L’avantage d’utiliser la réflexion pour tester des méthodes privées est qu’elle permet une séparation nette entre le code de test et le code de production. Comme nous le voyons déjà dans l'approche des classes imbriquées, les tests n'ont pas besoin d'être testés à l'intérieur de la classe, dans laquelle la classe est testée, mais ils peuvent être placés aux côtés des autres tests qui exercent le niveau package et les méthodes publiques de la classe. Comme nous utilisons une classe imbriquée, nous n'avons pas besoin d'ajouter de classe imbriquée supplémentaire au niveau d'accès au package.

Reflection est une API utilisée pour examiner ou modifier le comportement des méthodes, classes et interfaces au moment de l'exécution. L'inconvénient de l'utilisation de la réflexion est que le code de test est bien plus fastidieux car il utilise l'API de réflexion.

Exemple : programme Java pour décrire l'utilisation de la réflexion

Code :

import java.lang.reflect.Method;
import java.lang.reflect.Field;
class Test
{
private String s;
public Test()
{
s = "Java Testing Methods";
}
public void method1()
{
System.out.println("The string is " + s);
}
public void method2(int n)
{
System.out.println("The number is " + n);
}
private void method3()
{
System.out.println("Private method invoked");
}
}
class Reflect
{
public static void main(String args[]) throws Exception
{
Test obj = new Test();
Class cls = obj.getClass();
System.out.println("The name of class is " +
cls.getName());
System.out.println("The public methods of class are : ");
Method[] methods = cls.getMethods();
for (Method method:methods)
System.out.println(method.getName());
Method methodcall1 = cls.getDeclaredMethod("method2",
int.class);
methodcall1.invoke(obj, 19);
Field field = cls.getDeclaredField("s");
field.setAccessible(true);
field.set(obj, "JAVA");
Method methodcall2 = cls.getDeclaredMethod("method1");
methodcall2.invoke(obj);
Method methodcall3 = cls.getDeclaredMethod("method3");
methodcall3.setAccessible(true);
methodcall3.invoke(obj);
}
}

Sortie :

Méthodes privées de test Java

Dans le programme Java ci-dessus, nous devons d'abord importer des packages java.lang puis créer un champ privé dans la classe, le constructeur a également créé. La méthode1() a été considérée comme une méthode publique sans argument, puis créée méthode2() également une méthode publique mais avec des arguments entiers et une méthode privée, la méthode3 a été révoquée et les trois méthodes ci-dessus appelées dans la classe Reflect et le résultat est donné ci-dessus capture d'écran.

Conclusion

Dans cet article, nous concluons qu'il ne faut pas tester directement les méthodes privées, mais uniquement leurs effets sur les méthodes publiques qui les appellent. De plus, nous concluons que le test ne doit accéder qu’à l’interface publique de la classe. Si nous testons des méthodes privées, organisons le code réfléchissant dans la classe statique privée.

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 grâce à 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)

Qu'est-ce qu'une impasse en Java et comment pouvez-vous l'empêcher? Qu'est-ce qu'une impasse en Java et comment pouvez-vous l'empêcher? Aug 23, 2025 pm 12:55 PM

ADEADLOCKINJAVAOCCURSWHENTWOORMORORETHREADSAREBLOCKEDEDFOREVERS, chaque avance pour la fourniture de laBerce-Organisation de la manière générale;

Comment utiliser facultatif en Java? Comment utiliser facultatif en Java? Aug 22, 2025 am 10:27 AM

UseOptional.Empty (), facultatif.of (), andoptional.ofnullable () toCreateOptionalistances adepsendingonwherethevaluesabsent, non null, orpossibly null.2.Checkforvalussafelyusingispresent () orpreférall

Java Persistance avec les données de printemps JPA et Hibernate Java Persistance avec les données de printemps JPA et Hibernate Aug 22, 2025 am 07:52 AM

Le noyau de SpringDatajpa et Hibernate travaillant ensemble est: 1. JPA est la spécification et Hibernate est la mise en œuvre, l'encapsulation SpringDatajpa simplifie le développement DAO; 2. 3. L'interface du référentiel hérite de JParepository pour implémenter automatiquement les méthodes CRUD et nommées de requête; 4. Requêtes complexes Utilisez @Query Annotation pour prendre en charge JPQL ou SQL native; 5. Dans Springboot, l'intégration est terminée en ajoutant des dépendances de démarrage et en configurant les sources de données et les attributs JPA; 6. Les transactions sont effectuées par @transactiona

Java Cryptography Architecture (JCA) pour le codage sécurisé Java Cryptography Architecture (JCA) pour le codage sécurisé Aug 23, 2025 pm 01:20 PM

Comprendre les composants de base JCA tels que MessagediGest, Cipher, KeyGenerator, SecureRandom, Signature, Keystore, etc., qui mettent en œuvre des algorithmes via le mécanisme du fournisseur; 2. Utilisez des algorithmes et des paramètres forts tels que SHA-256 / SHA-512, AES (clé 256 bits, mode GCM), RSA (2048 bits ou supérieur) et SecureRandom; 3. Évitez les clés à code dur, utilisez des clés pour gérer les clés et générez des clés via des mots de passe dérivés en toute sécurité tels que PBKDF2; 4. Désactiver le mode ECB, adopter des modes de chiffrement d'authentification tels que GCM, utiliser des IV aléatoires uniques pour chaque cryptage et des caissiers clairs dans le temps

Correction: Windows affiche 'un privilège requis n'est pas détenu par le client' Correction: Windows affiche 'un privilège requis n'est pas détenu par le client' Aug 20, 2025 pm 12:02 PM

RunTheApplicationorCommandasAdministratorByRight-ClickingandSelectation "RunasAdministrator" ToenSureElevatedPrivileges agration.

Comment utiliser les classes de modèle et de correspondance en Java? Comment utiliser les classes de modèle et de correspondance en Java? Aug 22, 2025 am 09:57 AM

La classe de motif est utilisée pour compiler des expressions régulières, et la classe de correspondance est utilisée pour effectuer des opérations correspondantes sur les chaînes. La combinaison des deux peut réaliser la recherche de texte, la correspondance et le remplacement; Créez d'abord un objet Pattern via motifs.compile (), puis appelez sa méthode Matcher () pour générer une instance de correspondance. Ensuite, utilisez des matches () pour juger la correspondance complète de la chaîne, trouver () pour trouver des sous-séquences, remplacer () ou remplacerFirst () pour le remplacement. Si le habitué contient un groupe de capture, la nth de contenu du groupe peut être obtenue via le groupe (n). Dans les applications réelles, vous devez éviter les modèles de compilation répétés, faire attention aux évasions de caractères spéciales et utiliser le drapeau de modèle d'appariement selon les besoins, et finalement atteindre efficace

Les paramètres de jeu lol n'enregistrent pas après la fermeture [fixe] Les paramètres de jeu lol n'enregistrent pas après la fermeture [fixe] Aug 24, 2025 am 03:17 AM

IfleagueoflegendSettingSaren’ssaving, tryTheSesteps: 1.RunthegameasAdministrator.2.grantfullfolderpermissionstotheagueoflegendDirectory.3.Editandensuregame.cfgisn’Tread-only.4.DisableCloudsyNcfortaGamefolder.5.

'Java n'est pas reconnue' Erreur dans CMD [3 étapes simples] 'Java n'est pas reconnue' Erreur dans CMD [3 étapes simples] Aug 23, 2025 am 01:50 AM

IfjavaisnotRecognizedIncmd, assurez-vous, assurez-vous, établit, setthejava_homevariabbletothejdkpath, andddthejdk'sbinfoldertothesystemPath.restartcmdandrunjava-versiontoConfirm.

See all articles