>Java >java지도 시간 >Java 주석 및 리플렉션을 사용하여 Junit4 호출을 구현하는 방법

Java 주석 및 리플렉션을 사용하여 Junit4 호출을 구현하는 방법

WBOY
WBOY앞으로
2023-05-04 13:37:06957검색

인스턴스 요구 사항

요구 사항: Junit4에서 사용 사례 구조를 시뮬레이션하고 테스트 사례의 식별로 레이블을 사용자 정의합니다.

Junit4의 @Test 주석은 테스트 케이스를 나타냅니다. 각 테스트 케이스의 본질은 테스트 클래스의 메서드입니다. 즉:

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

특정 요구 사항:

테스트 클래스가 기본 구성 메서드인지 여부 label MyTag는 메소드로 사용됩니다. 유스케이스 식별을 위해

유스케이스의 메소드는 매개변수가 없어야 합니다

지정된 범위에서 테스트 케이스 호출을 완료할 수 있도록 runCase(String pkgName) 메소드를 작성합니다. class

Annotation design

먼저 주석 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 프레임워크를 시뮬레이션하고 로그인, 정보 및 로그아웃이 매개변수 없는 테스트 클래스를 작성합니다. 테스트는 매개변수화된 메소드입니다

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제