요구 사항: Junit4에서 사용 사례 구조를 시뮬레이션하고 테스트 사례의 식별로 레이블을 사용자 정의합니다.
Junit4의 @Test 주석은 테스트 케이스를 나타냅니다. 각 테스트 케이스의 본질은 테스트 클래스의 메서드입니다. 즉:
@Test public void test() { fail("Not yet implemented"); }
특정 요구 사항:
테스트 클래스가 기본 구성 메서드인지 여부 label MyTag는 메소드로 사용됩니다. 유스케이스 식별을 위해
유스케이스의 메소드는 매개변수가 없어야 합니다
지정된 범위에서 테스트 케이스 호출을 완료할 수 있도록 runCase(String pkgName) 메소드를 작성합니다. class
Annotation design
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(); }
테스트 케이스 디자인
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"); } }
실행 클래스의 디자인 아이디어
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!