Java

JUnit5란 무엇인가?

Mulenga 2023. 3. 1. 09:15
728x90

JUnit5는 Java 언어를 사용하는 소프트웨어 개발자들이 단위 테스트를 작성하는 데 사용되는 프레임워크이다.

 

JUnit5의 주요 기능은 다음과 같다.

 

- 모듈 시스템 지원: JUnit5는 Java 9 이상의 모듈 시스템을 지원한다.

 

- 확장 모델: JUnit5는 테스트 라이프사이클과 실행 모델을 확장할 수 있는 플러그인 아키텍처를 제공한다. 이를 통해 사용자 정의 태그, 조건부 실행, 다중 실행 등과 같은 기능을 추가할 수 있다.

 

- 더 나은 테스트 라이프사이클: JUnit5는 테스트 라이프사이클을 확장하여 더욱 유연한 테스트 수명주기를 제공한다. 예를 들어, 이전 버전의 JUnit에서는 @Before 및 @After 어노테이션을 사용하여 각 테스트 전후에 실행되는 코드를 정의할 수 있다. JUnit5에서는 @BeforeEach 및 @AfterEach 어노테이션을 사용하여 개별 테스트 실행 전후에 실행되는 코드를 정의할 수 있다.

 

- Assertion API 개선: JUnit5는 새로운 Assertion API를 제공하며, 기존의 assertEquals(), assertTrue(), assertFalse()와 같은 메서드보다 더욱 다양한 비교 및 테스트 기능을 제공한다. 예를 들어, assertThrows() 메서드를 사용하여 예외 발생 여부를 테스트할 수 있다.

 

- 테스트 인스턴스 라이프사이클: JUnit5는 각 테스트 메서드를 실행할 때마다 새로운 인스턴스를 만들거나, 하나의 인스턴스를 공유하거나, 컨테이너 수준에서 인스턴스를 공유하는 세 가지 방법 중 하나를 선택할 수 있다.

 

-다중 플랫폼 지원: JUnit5는 JVM에서 단위 테스트를 실행하는 것 외에도 다른 플랫폼에서도 실행할 수 있다.

 

이러한 기능들을 통해 JUnit5는 개발자들이 더욱 효율적이고 유연한 단위 테스트를 작성할 수 있도록 도와준다.

 

JUnit 함수와 어노테이션

 

1. 어노테이션

@Test: 테스트 메소드임을 나타내는 어노테이션

@Before: 각각의 테스트 메소드 실행 전에 실행할 메소드를 나타내는 어노테이션

@After: 각각의 테스트 메소드 실행 후에 실행할 메소드를 나타내는 어노테이션

@BeforeEach: 각각의 테스트 메소드 실행 전에 실행할 메소드를 나타내는 어노테이션 (JUnit5부터 사용 가능)

@AfterEach: 각각의 테스트 메소드 실행 후에 실행할 메소드를 나타내는 어노테이션 (JUnit5부터 사용 가능)

@Disabled: 해당 테스트 메소드를 비활성화하는 어노테이션

 

2. Assertion 함수

assertEquals(expected, actual): 기대하는 값과 실제 값이 같은지 비교하는 함수

assertNotEquals(expected, actual): 기대하는 값과 실제 값이 다른지 비교하는 함수

assertTrue(condition): 조건이 참인지 확인하는 함수

assertFalse(condition): 조건이 거짓인지 확인하는 함수

assertNull(object): 객체가 null인지 확인하는 함수

assertNotNull(object): 객체가 null이 아닌지 확인하는 함수

assertArrayEquals(expectedArray, resultArray): 기대하는 배열과 실제 배열이 같은지 비교하는 함수

assertThrows(exceptionType, executable): 지정한 예외가 발생하는지 확인하는 함수

기타 함수

fail(): 테스트를 실패로 처리하는 함수

 

위 함수와 어노테이션 외에도 다양한 함수와 어노테이션이 제공되며, 상황에 따라 사용할 수 있는 함수가 달라질 수 있다. JUnit 공식 문서에서는 더욱 자세한 정보를 확인할 수 있다.

 

https://junit.org/junit5/docs/current/user-guide/

 

'Java' 카테고리의 다른 글

<JAVA> LocalDateTime 사용법  (0) 2023.04.13
Mockito란 무엇인가?  (0) 2023.03.02
<JAVA> Stream sorted 메서드  (0) 2023.01.24
<JAVA> Stream Map메서드  (0) 2023.01.23
<Java> Stream Filter 메서드  (0) 2023.01.21