list junit annotations
이 튜토리얼은 JUnit 4와 JUnit 5의 주석 비교와 함께 JUnit 주석에 대한 모든 것을 설명합니다.
우리는 JUnit 테스트 케이스를 실행하는 다양한 방법을 배웠고 이전 튜토리얼에서 테스트 스위트를 만들고 실행하는 방법을 보았습니다.
이 튜토리얼에서 우리는 JUnit의 두드러진 측면을 알게 될 것입니다. 주석. JUnit 4부터 주석이 배치되어 JUnit을 매우 간단하고 유용하며 사용하기 훨씬 더 편리하게 만듭니다.
주석 JVM이 테스트 클래스에 정의 된 메소드 유형을 인식 할 수 있도록하는 Java API입니다. 자주 사용되는 '수명주기 콜백 주석'이 있습니다.
=> 처음부터 JUnit을 배우려면 여기를 방문하십시오.
학습 내용 :
JUnit 주석 – JUnit 4 대 JUnit 5
테스트 실행은 아래와 같이 수명주기의 여러 단계를 거칩니다.
- 시험을 시작하기 전에 수업 시작시 수행해야 할 특정 활동이 있습니다.
- 테스트 케이스가 실행을 시작하기 전에 수행 할 특정 기타 활동.
- 테스트 실행 후 수행해야하는 특정 활동 및
- 클래스의 모든 테스트 실행이 끝날 때의 특정 활동.
이러한 활동이 Java 라이프 사이클의 각 단계에서 수행되는지 확인하려면 '라고하는 특정 사용자 정의 메소드 또는 기능이 있어야합니다. 수명주기 콜백 방법 .
이들의 행동 수명주기 콜백 방법 기본 제공‘ 수명주기 콜백 주석 ' JUnit에서 사용됩니다.
예: 이러한 수명주기 콜백 메서드 및 주석을 다음의 예와 연결하여 더 간단하게 만들어 보겠습니다. 커피 자판기 테스트.
- 방법 machineReady () 기계를 켜기 전에 물, 우유 및 커피 원두를 사용할 수 있는지 확인하는 것이 필요할 수 있습니다.
- 다른 방법 startMachine () 기계를 켜려면 기계에 새 종이컵을 넣어야 할 수도 있습니다.
- ' 뜨거운 물 () '옵션.
- ‘ 카푸치노 () '옵션.
- ‘ ExpressoCoffee () '옵션.
- 또 다른 방법“ throwCup ()”는 사용한 컵을 쓰레기통에 버립니다.
- 클래스 수준의 방법 ' throwTrashandSwitchOff ()”는 넘쳐 흐르는 폐액을 트레이에서 대야로 버리고 기계를 끕니다.
따라서 위의 예에서 테스트의 수명주기는 다음과 같습니다.
- startMachine ()는 각 테스트 케이스 전에 실행됩니다. 뜨거운 물 (), 카푸치노 () 및 ExpressoCoffee () 실행됩니다.
- 이 테스트 케이스 각각은 다음 방법을 따릅니다. throwCup ().
- 방법 machineReady () 및 throwTrashandSwitchOff ()는 클래스에 대해 한 번만 실행되는 클래스 수준 메서드입니다. 방법 machineReady ()는 클래스가 실행을 시작하는 동안 한 번 실행됩니다. 방법 throwTrashandSwitchOff ()는 모든 테스트 케이스가 실행 된 후 한 번 실행됩니다.
이제 문제는 이것들이 단지 Java 메소드 일 뿐이라는 것입니다.
기본 자바 인터뷰 질문 및 답변
- JVM 실행을 어떻게 주장 할 것인가 machineReady () 수업 수준에서 한 번만 throwTrashandSwitchOff () 클래스 실행이 끝날 때?
- JVM이 어떻게 알 수 있습니까? startMachine () 및 throwCup () 각 테스트 케이스 실행 전과 각 테스트 케이스 실행 완료 후 각각 실행해야합니까?
- JVM이 방법을 식별하도록 어떻게 할 수 있습니까? 뜨거운 물 (), 카푸치노 () 및 ExpressoCoffee () 테스트 케이스를 실행할 수 있습니까?
답변 : 위 질문에 대한 유일한 답변은 수명주기 콜백 주석이 필요한 모든 기능을 수행한다는 것입니다.
(지금은 JUnit 4에서이 클래스를 생성한다고 가정하겠습니다.)
수명주기 주석 – @BeforeClass, @AfterClass, @Before, @After, 과 @테스트 위의 세 가지 질문에 대한 실제 답변입니다. 아래 포인터를 읽은 후에는 수명주기 콜백 주석과 해당 워크 플로를 명확하게 알 수 있습니다.
- 방법에 주석 달기 machineReady () 함께 뿡 빵뀨 JVM은 클래스가 시작되는 동안 한 번 실행되도록합니다.
- 방법에 주석 달기 쓰레기를 던져 () 함께 @방과후 JVM은 클래스가 끝날 때 한 번 실행되도록합니다.
- 방법에 주석 달기 startMachine () 함께 @전에 JVM은 각 테스트 케이스가 실행되기 전에이를 실행합니다.
- 방법에 주석 달기 throwCup () 함께 @후 JVM은 각 테스트 케이스를 실행 한 후이를 실행합니다.
- 각 방법에 주석 달기 뜨거운 물 (), 카푸치노 () 및 ExpressoCoffee () 함께 @테스트 JVM은 이것이 실행될 JUnit 클래스의 핵심 테스트 케이스라는 것을 알고 있습니다.
빠르게 살펴 보겠습니다. JUnit 4 대 JUnit 5에 대한 JUnit 라이프 사이클 콜백 주석
JUNIT 4 주석 | JUNIT 5 주석 | |
---|---|---|
@RepeatedTest | 1. JUnit 5는 @RepeatedTest 주석을 사용하여 일정 횟수 동안 테스트 메서드의 반복 실행을 지원합니다. | |
@전에 | 뿡 빵뀨 | |
@후 | @AfterEach | |
뿡 빵뀨 | @BeforeAll | |
@방과후 | @AfterAll | |
@테스트 | @테스트 |
라이프 사이클 주석의 순차적 워크 플로우
다음은 JUnit 4에 대한 라이프 사이클 주석의 순차적 워크 플로우입니다.
- @BeforeClass로 주석이 달린 메서드는 클래스 시작시 한 번 실행됩니다.
- @Before 주석이 달린 메서드는 Testcase 1이 시작되기 전에 실행됩니다.
- @Test로 주석이 달린 Testcase1 메서드는 클래스의 테스트 케이스입니다.
- @After 주석이 달린 메서드는 Testcase 1이 실행을 완료 한 후에 실행됩니다.
- @Before 주석이 달린 메서드는 Testcase 2가 시작되기 전에 실행됩니다.
- @Test로 주석이 달린 Testcase2 메서드는 클래스의 테스트 케이스입니다.
- @After 주석이 달린 메서드는 Testcase 2가 실행을 완료 한 후에 실행됩니다.
- @AfterClass로 주석이 달린 메소드는 테스트 케이스 1과 2가 모두 실행 된 후 클래스의 끝에서 한 번 실행됩니다.
JUnit 5에 대한 라이프 사이클 주석의 순차적 워크 플로우는 다음과 같습니다.
- @BeforeAll 주석이 달린 메서드는 클래스 시작시 한 번 실행됩니다.
- @BeforeEach 주석이 달린 메서드는 Testcase 1이 시작되기 전에 실행됩니다.
- @Test로 주석이 달린 Testcase1 메서드는 클래스의 테스트 케이스입니다.
- @AfterEach로 주석이 달린 메서드는 Testcase 1이 실행을 완료 한 후에 실행됩니다.
- @BeforeEach로 주석이 달린 메서드는 Testcase 2가 시작되기 전에 실행됩니다.
- @Test로 주석이 달린 Testcase2 메서드는 클래스의 테스트 케이스입니다.
- @AfterEach로 주석이 달린 메서드는 Testcase 2가 실행을 완료 한 후에 실행됩니다.
- @AfterAll로 주석이 달린 메소드는 테스트 케이스 1과 2가 모두 실행 된 후 클래스의 끝에서 한 번 실행됩니다.
각 주석에 대한 설명
이 섹션에서는 각 수명주기 콜백 주석이 수행하는 작업에 대해 자세히 살펴 보겠습니다.
@Before (JUnit 4) / @ BeforeEach (JUnit 5) :
- 주석이 달린 메소드는 테스트 클래스의 각 테스트 메소드를 실행하기 전에 실행됩니다.
- 이 주석은 각 테스트를 시작하기 직전에 리소스 또는 테스트 데이터를 설정하려는 경우에 사용할 수 있습니다.
- 예를 들면 JUnit 테스트 클래스에 5 개의 테스트 케이스가있는 경우 @ Before / @ BeforeEach 주석이 달린 메소드는 각 테스트 케이스 실행 전에 5 번 실행됩니다.
@After (JUnit 4) / @ AfterEach (JUnit 5) :
- 주석이 달린 메서드는 테스트 클래스의 각 테스트 메서드가 실행 된 후에 실행됩니다.
- 이 주석은 각 테스트 케이스가 실행 된 후 사용 된 리소스 또는 테스트 데이터를 해제해야 할 때 사용할 수 있습니다.
- 예를 들면 JUnit 테스트 클래스에 5 개의 테스트 케이스가있는 경우 @ After / @ AfterEach 주석이 달린 메소드는 테스트 케이스 실행 후 5 번 실행됩니다.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5) :
- 주석이 달린 메서드는 테스트 클래스의 모든 테스트 메서드가 실행되기 전에 실행됩니다.
- 이 주석은 리소스를 설정하거나 클래스 수준에서 데이터를 테스트하려는 경우에 사용할 수 있습니다.
- 이 메서드는 @ BeforeClass / @ BeforeAll로 주석 처리되므로 테스트 클래스에 대해 한 번만 실행되고 메서드의 복사본이 클래스 전체에서 공유되며 메서드를 명시해야합니다. 공전.
- 예를 들면 JUnit 테스트 클래스에 5 개의 테스트 케이스가있는 경우 @ BeforeClass / @ BeforeAll로 주석이 달린 메소드는 테스트 케이스가 시작되기 전에 테스트 클래스 당 한 번 실행됩니다.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5) :
- 주석이 추가 된 메서드는 테스트 클래스의 모든 테스트 메서드가 실행 된 후에 실행됩니다.
- 이 주석은 사용 된 리소스 또는 테스트 데이터를 클래스 수준에서 해제하려는 경우 사용할 수 있습니다.
- 이 메서드는 @ AfterClass / @ AfterAll로 주석 처리되어 테스트 클래스에 대해 한 번만 실행되고 메서드 복사본이 클래스 전체에서 공유되므로 메서드를 명시해야합니다. 공전.
- 예를 들면 JUnit 테스트 클래스에 5 개의 테스트 케이스가있는 경우 @ AfterClass / @ AfterAll 주석이 달린 메소드는 모든 테스트 케이스가 실행을 완료 한 후 테스트 클래스 당 한 번씩 실행됩니다.
@Test (JUnit 4 및 JUnit 5) :
- @Test 어노테이션은 JUnit 4와 JUnit 5에 공통입니다. 어노테이션이있는 메소드는 클래스의 테스트 케이스를 나타냅니다.
- JUnit 클래스에서 각각 @Test로 주석이 달린 여러 메소드가있을 수 있습니다. 이것은 클래스에 여러 테스트 케이스가있을 수 있음을 의미합니다.
- 테스트 할 수있는 여러 속성 또는 매개 변수가 있습니다. 테스트 케이스에 대해 강제 제한 시간을 추가하거나 예외를 추가 할 수 있습니다. 이에 대해서는 별도의 자습서에서 자세히 다룹니다.
- 어노테이션이있는 메소드는 개인 또는 정적 일 수 없으며 값을 리턴 할 수 없습니다.
- @Test 메소드는 JUnit 4에서 public으로 선언되어야하며 Junit 5는 기본적으로 'no access modifier'를 'public'으로 간주하므로 액세스 수정 자 'public'없이 정의 된 테스트 케이스를 허용합니다.
기본 JUNIT 테스트 예
기본 6 월 4 일 @BeforeClass, @Before, @Test, @After 및 @AfterClass 주석의 예는 'Test Fixtures'에 대한 이전 자습서의 설명과 함께 코드를 통해 표시되었습니다.
기본을 살펴 보겠습니다. JUnit 5 Lifecycle 콜백 주석 @BeforeAll, @BeforeEach, @Test, @AfterEach 및 @AfterAll의 작동을 보여주는 프로그램입니다.
JUnit5Program.java의 코드 :
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
클래스 파일을 실행하면 콘솔 창에 아래와 같은 결과가 나타납니다.
추가 주석 – JUnit 4 대 JUnit 5
특정 목적으로 사용되는 추가 주석이 많이 있습니다. JUnit 4와 JUnit 5의 주석 목록과 그 용도를 간략하게 살펴 보겠습니다.
향후 튜토리얼에서 이러한 각 주석에 대한 자세한 튜토리얼이있을 것입니다.
JUNIT 4 주석 | JUNIT 5 주석 | 간략한 설명 |
---|---|---|
@FixMethodOrder | @TestMethodOrder 및 @Order | 1. 이러한 주석을 통해 사용자는 테스트 클래스 내에서 메서드 실행 순서를 선택할 수 있습니다. |
@Rule 및 @ClassRule | @extendWith | 1. @Rule – 주석은 테스트 케이스에 특정 규칙을 적용하는 데 도움이되는 TestRule 클래스에서 확장됩니다. 2. 예 : 테스트 케이스 실행 전 임시 폴더 생성 및 실행 후 폴더 삭제는 Rule을 통해 설정할 수 있습니다. 3. @Rule은 JUnit 5 Vintage에서 사용할 수있는 JUnit 4에서만 사용할 수 있지만 @ExtendWith는 JUnit 5에 더 가까운 기능을 제공합니다. 4. 마찬가지로 @Rule을 사용하여 전역 시간 제한을 설정할 수 있습니다. |
NA | @TestFactory | 1.이 주석은 JUnit 5에서만 지원되며 동적 또는 런타임 테스트 생성에 도움이됩니다. 2. 데이터 스트림을 컬렉션으로 반환하며 수명주기 콜백 주석을 사용할 수 없습니다. |
NA | @Nested | 1.이 주석은 JUnit Jupiter에서만 지원됩니다. 2. 중첩 된 테스트 케이스를 만드는 데 도움이됩니다. 3. 예를 들어, 테스트 케이스 1이있는 클래스 1에는 테스트 케이스 2가있는 @Nested 클래스 2가있을 수 있습니다. 이렇게하면 테스트 케이스 2가 테스트 케이스 1에 대한 중첩 테스트 케이스가됩니다. 따라서 테스트 케이스 1이 실행 된 다음 테스트 케이스 2가 실행됩니다. 4. @Nested 주석을 사용하지 않으면 중첩 된 클래스가 실행되지 않습니다. |
@범주 | @꼬리표 | 1.이 주석은 테스트 태그 지정 및 필터링에 도움이됩니다. 2. 실행할 테스트를 포함하거나 해당 범주에 따라 필터링하여 제외 할 수 있습니다. |
@RunWith (Parameterized.class) @ Parameterized.Parameters | @ParameterizedTest 및 @ValueSource | 1.이 주석은 테스트 데이터 변형이있는 메소드를 여러 번 실행하는 데 사용됩니다. 2. JUnit 4는 @RunWith 및 @Parameters를 지원하는 반면 JUnit 5 Jupiter는 @ValueSource와 함께 @ParameterizedTest를 지원합니다. |
@이름 표시하기 | 1. 사용자 정의 이름을 표시 목적으로 테스트 메서드 또는 클래스에 지정할 수 있습니다. | |
@TestInstance (LifeCycle.PER_CLASS) 및 @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5는 테스트 라이프 사이클 구성을 지원합니다. 2. JUnit 4와 5는 모두 기본 메소드 라이프 사이클 콜백을 따르며 클래스 별 구성도 수행 할 수 있습니다. |
결론
- 수명주기 콜백 주석과 해당 주석을 기반으로 테스트 메서드가 실행되는 순차적 워크 플로에 대해 배웠습니다.
- JUnit 4에 사용 된 주석과 JUnit 5에 대한 주석을 배웠습니다.
- 또한 JUnit 4가 지원하는 추가 주석과 JUnit 5 만 지원하는 주석에 대해서도 배웠습니다.
=> 여기에서 간단한 JUnit 교육 시리즈를보십시오.