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

WBOY
リリース: 2023-05-04 13:37:06
転載
922 人が閲覧しました

インスタンス要件

要件: 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!