ホームページ  >  記事  >  Java  >  Java アノテーションとリフレクションを使用して Junit4 呼び出しを実装する方法

Java アノテーションとリフレクションを使用して Junit4 呼び出しを実装する方法

WBOY
WBOY転載
2023-05-04 13:37:06876ブラウズ

インスタンス要件

要件: Junit4 でユース ケース構造をシミュレートし、テスト ケースの識別としてラベルをカスタマイズします。

Junit4 のアノテーション @Test はテスト ケースを表します。各テスト ケースの本質はテスト クラスのメソッドです。つまり:

@Test public void test() { fail("Not yet implemented"); }

特定の要件:

テスト クラス これはデフォルトの構築メソッドです

メソッドがユース ケースであるかどうかの識別子としてラベル MyTag を使用します

ユース ケースとしてのメソッドはパラメーターなしである必要があります

runCase(String pkgName) メソッドを作成します。指定されたクラスのテスト ケースの呼び出しを完了できるようにするには、

アノテーションの設計

まず、アノテーション MyTag を定義する必要があります。コードは次のとおりです。以下:

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

テスト ケースの設計

junit4 フレームワークをシミュレートし、login、info、logout がパラメータなしのメソッドであり、test がパラメータ化されたメソッドであるテスト クラスを作成します

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");  } }

実行クラスの設計思想

テストクラスなのでデフォルトの構築メソッドなので、以下のAPIを使ってクラスのインスタンス化を完了します

Class<?> clazz = Class.forName(pkgName) Object obj = clazz.newInstance();

メソッドがたくさんあるのでテスト クラスでは、すべてのメソッドを取得し、ルールに従ってフィルタリングする必要があります。コードは次のとおりです:

Method[] methods = clazz.getMethods(); for (Method method : methods) { //过滤规则  }

メソッドのタグが MyTag であるかどうかを判断するには、コードは次のとおりです:

If(method.getAnnotation(MyTag.class) != null)

メソッドにパラメーターがないかどうかを確認するには、コードは次のとおりです。

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

テスト ケース名: logout

login

テスト ケース名:login

info

テストケース名は:info

以上がJava アノテーションとリフレクションを使用して Junit4 呼び出しを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。