Maison > Java > javaDidacticiel > Comment utiliser les annotations et la réflexion Java pour implémenter les appels Junit4

Comment utiliser les annotations et la réflexion Java pour implémenter les appels Junit4

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-05-04 13:37:06
avant
1012 Les gens l'ont consulté

Exigence d'instance

Exigence : Simulez la structure du cas d'utilisation dans Junit4 et personnalisez une étiquette comme identification du cas de test.

L'annotation @Test représente un cas de test dans Junit4 L'essence de chaque cas de test est une méthode dans la classe de test, c'est-à-dire :

@Test public void test() { fail("Not yet implemented"); }
Copier après la connexion

Exigences spécifiques : #🎜. 🎜#

La classe de test est la méthode de construction par défaut

Utilisez le label MyTag comme identifiant pour savoir si la méthode est un cas d'utilisation

La méthode comme utilisation case doit être sans paramètre

# 🎜🎜#Écrire une méthode runCase(String pkgName) afin qu'elle puisse terminer l'appel des cas de test dans la classe spécifiée

Annotation design

#🎜 🎜#Vous devez d'abord définir une annotation MyTag. Le code est le suivant :

import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyTag{ String name(); }
Copier après la connexion

Conception du cas de test

Simulez le framework junit4 et écrivez une classe de test, où vous connecter, info et logout sont des méthodes sans paramètre, et test est une méthode paramétrée# 🎜🎜#
public class TestTag{ @MyTag(name="case1") public void login(){ System.out.println("login"); } @MyTag(name="case2") public void info(){ System.out.println("info");  } @MyTag(name="case3") public void logout(){ System.out.println("logout"); } @MyTag(name="case4") public void test(String p){ System.out.println("logout");  } }
Copier après la connexion

L'idée de conception de la classe en cours d'exécution

Parce que la classe de test est la méthode de construction par défaut, la L'API suivante est utilisée pour terminer l'instanciation de classe

Class<?> clazz = Class.forName(pkgName) Object obj = clazz.newInstance();
Copier après la connexion

Parce que la classe de test contient de nombreuses méthodes, nous devons obtenir toutes les méthodes et les filtrer selon les règles. Le code est le suivant :

Method[] methods = clazz.getMethods(); for (Method method : methods) { //过滤规则  }
Copier après la connexion

Déterminez si la balise de la méthode est MyTag Le code est le suivant :

If(method.getAnnotation(MyTag.class) != null)
Copier après la connexion

Judge Si la méthode n'a pas de paramètres, le code est le suivant : #🎜 🎜#

If(method.getParameterCount()==0)
Copier après la connexion
Exécutez la méthode, le code est le suivant :

method.invoke(obj)
Copier après la connexion
Full code

public static void runCase(String pkgName) throws IllegalAccessException,IllegalArgumentException, InvocationTargetException, InstantiationException,ClassNotFoundException {  Class<?> clazz = Class.forName(pkgName);  Object obj = clazz.newInstance();  Method[] methods = clazz.getMethods(); for (Method method : methods) {        if(method.getAnnotation(MyTag.class) != null&& method.getParameterCount()==0) {                                 method.invoke(obj); //调用方法                System.out.println("测试用例名称是:"+method.getName()); } } }
Copier après la connexion
Exécutez le code, le résultat est le suivant : # 🎜🎜 #
logout
Copier après la connexion

Le nom du cas de test est : logout

login
Copier après la connexion

Le nom du cas de test est : login

info
Copier après la connexion

Le nom du cas de test est : info

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!

Étiquettes associées:
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 numéros
Impossible d'installer Java
Depuis 1970-01-01 08:00:00
0
0
0
Java peut-il être utilisé comme backend du Web ?
Depuis 1970-01-01 08:00:00
0
0
0
Installer JAVA
Depuis 1970-01-01 08:00:00
0
0
0
Aide : Données chiffrées JAVA Décryptage PHP
Depuis 1970-01-01 08:00:00
0
0
0
Est-ce en langage Java ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal