Heim  >  Artikel  >  Java  >  So verwenden Sie Java-Annotationen und -Reflexion, um Junit4-Aufrufe zu implementieren

So verwenden Sie Java-Annotationen und -Reflexion, um Junit4-Aufrufe zu implementieren

WBOY
WBOYnach vorne
2023-05-04 13:37:06930Durchsuche

Instanzanforderung

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 Standardkonstruktionsmethode

Verwenden Sie die Bezeichnung MyTag als Kennung dafür, ob die Methode ein Anwendungsfall ist

Die 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(); }

Testfalldesign

Simulieren Sie das Junit4-Framework und schreiben Sie eine Testklasse, in der Sie sich anmelden, info und logout sind Parameterlose Methoden, und Test ist eine parametrisierte Methode# 🎜🎜#
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");  } }

Die Designidee der laufenden Klasse

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();

Da die Testklasse viele Methoden enthält, müssen wir alle Methoden abrufen und sie gemäß den Regeln filtern.

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)
Führen Sie die Methode aus. Der Code lautet wie folgt:

method.invoke(obj)
Vollständiger 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()); } } }
Führen Sie den Code aus. Die Ausgabe lautet wie folgt: # 🎜🎜 #
logout

Der Name des Testfalls lautet: logout

login

Der Name des Testfalls lautet: 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen