Anforderung: Simulieren Sie die Anwendungsfallstruktur in Junit4 und passen Sie eine Beschriftung als Identifizierung des Testfalls an.
Die Annotation @Test stellt einen Testfall in Junit4 dar. Die Essenz jedes Testfalls ist eine Methode in der Testklasse, das heißt:
@Test public void test() { fail("Not yet implemented"); }
Spezifische Anforderungen: #🎜 🎜#
Die Testklasse ist die StandardkonstruktionsmethodeVerwenden Sie die Bezeichnung MyTag als Kennung dafür, ob die Methode ein Anwendungsfall istDie Methode als Verwendung case muss ohne Parameter sein# 🎜🎜#Schreiben Sie eine Methode runCase(String pkgName), damit sie den Aufruf von Testfällen in der angegebenen Klasse abschließen kann
Annotation design
#🎜 🎜#Zuerst müssen Sie eine Annotation MyTag definieren. Der Code lautet wie folgt: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"); } }
Da die Testklasse die Standardkonstruktionsmethode ist, ist die Die folgende API wird verwendet, um die Klasseninstanziierung abzuschließen
Class<?> clazz = Class.forName(pkgName) Object obj = clazz.newInstance();
Method[] methods = clazz.getMethods(); for (Method method : methods) { //过滤规则 }
Bestimmen Sie, ob das Tag der Methode MyTag ist. Der Code lautet wie folgt:
If(method.getAnnotation(MyTag.class) != null)
Beurteilen Ob die Methode keine Parameter hat, lautet der Code wie folgt: #🎜 🎜#
If(method.getParameterCount()==0)
method.invoke(obj)
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()); } } }
logout
Der Name des Testfalls lautet: logout
login
info
Der Name des Testfalls lautet: info
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Java-Annotationen und -Reflexion, um Junit4-Aufrufe zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!