要件: 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 サイトの他の関連記事を参照してください。