Heim > Java > javaLernprogramm > 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
Freigeben: 2023-05-04 13:37:06
nach vorne
937 Leute haben es durchsucht

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"); }
Nach dem Login kopieren

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(); }
Nach dem Login kopieren

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");  } }
Nach dem Login kopieren

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();
Nach dem Login kopieren

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) { //过滤规则  }
Nach dem Login kopieren

Bestimmen Sie, ob das Tag der Methode MyTag ist. Der Code lautet wie folgt:

If(method.getAnnotation(MyTag.class) != null)
Nach dem Login kopieren

Beurteilen Ob die Methode keine Parameter hat, lautet der Code wie folgt: #🎜 🎜#

If(method.getParameterCount()==0)
Nach dem Login kopieren
Führen Sie die Methode aus. Der Code lautet wie folgt:

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

Der Name des Testfalls lautet: logout

login
Nach dem Login kopieren

Der Name des Testfalls lautet: login

info
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage