다음과 같은 세 가지 모드 :( 이전 버전 4의 명명 된 단점은,의 JUnit 테스트 프레임 워크) Beck04] 시험 시험 방법 지정된 이름을 시작하기 위해 사용자가 필요합니다
1. 맞춤법 실수는 실패로 이어질하지만, 메시지가 표시되지 않습니다.
2. 그들은 단지 적절한 프로그램 요소에 사용할 수 없습니다 있는지 확인하십시오.
3. 그들은 프로그램 요소와 관련된 좋은 방법 매개 변수 값을 제공하지 않습니다.
Junit4의 예를 아래 주석의 장점을 설명하기 위해
/ ** * 주석 방법은 시험 방법임을 나타낸다. * 만 매개 변수가 정적 메서드에 사용합니다. * / @Retention (RetentionPolicy.RUNTIME) @Target (ElementType.METHOD) 공개 @의 인터페이스 테스트 { }
// 프로그램은 마커 주석 처리하는 가져 java.lang.reflect의를 *. ;
공용 클래스 RunTests { 공공 정적 무효 메인 (문자열 [] 인수)이 발생 예외 { INT의 테스트 = 0 ; INT는 = 0 전달 ; 클래스 의 TestClass = Class.forName을 (인수 [0 <?> ]); 대 (: testClass.getDeclaredMethods () 메소드 m) { 경우 (. m.isAnnotationPresent (테스트 클래스 )) { 시험 ++ ; 시도 { m.invoke ( 널 (null) ); 통과 ++ ; } 캐치 (wrappedExc있는 InvocationTargetException) { 의 Throwable EXC = wrappedExc.getCause (); 에서 System.out.println (m +는 "실패 :"+ EXC); } 캐치 (예외 EXC) { 에서 System.out.println ( "잘못된 @Test :"+ m); } } } System.out.printf ( "통과 %의 D, 실패한 %의 D %의 n을" 통과, 테스트 - 통과); }
}
자바 8 시작, 다중 값 사항을 수행 할 수있는 또 다른 방법이있다. @Repeatable 요소없이 주석 문 메모를 지정하기 위해 사용될 수있다
주석 선언 어레이 형 파라미터를 이용하여, 주석이 단일 요소를 표시하기 위해 반복적으로 적용 할 수있다.
// 반복 주석 형 @Retention (RetentionPolicy.RUNTIME) @Target (ElementType.METHOD) @Repeatable (ExceptionTestContainer. 클래스) 공공의 @의 인터페이스 ExceptionTest { 클래스 <? 연장 예외> ) (값; }
@Retention (RetentionPolicy.RUNTIME) @Target (ElementType.METHOD) 공개 @의 인터페이스 ExceptionTestContainer { ExceptionTest []의 값 (); }
// 코드 반복 주석 포함
@ExceptionTest (IndexOutOfBoundsException.class를)
@ExceptionTest (NullPointerException.class)
공공 정적 무효 doublyBad () {...}
요약 :이 자리에 주석을 사용할 수있는 경우, 이름 패턴을 사용할 필요는 없다. 모든 프로그래머는 자바가 제공하는 미리 정의 된 주석 유형을 사용해야합니다.