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"); }
Exigences spécifiques : #🎜. 🎜#
La classe de test est la méthode de construction par défautUtilisez le label MyTag comme identifiant pour savoir si la méthode est un cas d'utilisationLa 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(); }
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"); } }
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();
Method[] methods = clazz.getMethods(); for (Method method : methods) { //过滤规则 }
Déterminez si la balise de la méthode est MyTag Le code est le suivant :
If(method.getAnnotation(MyTag.class) != null)
Judge Si la méthode n'a pas de paramètres, le code est le suivant : #🎜 🎜#
If(method.getParameterCount()==0)Exécutez la méthode, le code est le suivant :
method.invoke(obj)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()); } } }Exécutez le code, le résultat est le suivant : # 🎜🎜 #
logout
Le nom du cas de test est : logout
login
info
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!