본문 바로가기
코딩 공부/web & Java

[Java] JUnit

by 현장 2023. 12. 12.

JUnit

자바 프로그래밍 언어용 단 테스트 프레임워크입니다. 테스트시 테스트 결과는 Test클래스로 개발자에게  테스트 방법 및 클래스의 History를 공유 가능합니다. 또한 단정(assert) 메서드로 테스트 케이스의 수행 결과를 판별하며 JUnit4부터 어노테이션으로 간결하게 지원을 하여 쉽게 사용할 수 있습니다.

단위 테스트란?
프로그래밍에서 모든 함수와 메서드에 대한 테스트 케이스를 작성하여 의도된 대로 잘 동작하는지 검증하는 절차입니다. 프로그램을 작은 단위로 쪼개어 각 단위가 정확하게 동작하는지 검사하여 프로그램의 안정성을 높일수 있습니다. 또한 System.out.println()으로 하는 번거로운 디버깅이 필요없기 때문에 개발기간 중 대부분을 차지하는 디버깅 시간을 단축할 수 있습니다.

🏷️ 단정 메서드

✅ assertArrayEquals(a, b)

배열 A와 B가 일치함을 확인합니다.

✅ assertEquals(a, b)

객체 A와 B가 같은 값을 가지는지 확인합니다.

✅ assertEquals(a, b, c)

객체 A와 B가 값이 일치함을 확인( a: 예상값, b:결과값, c: 오차범위)합니다.

✅ assertSame(a, b)

객체 A와 B가 같은 객체임을 확인합니다.

✅ assertTrue(a)

조건 A가 참인지 확인합니다.

✅ assertNotNull(a)

객체 A가 null이 아님을 확인합니다.

🏷️ 기본 어노테이션

✅ @Test

테스트를 만드는 모듈 역할입니다.

✅ @DisplayName

테스트 클래스 또는 테스트 메서드의 사용자 정의 표시 이름을 정의합니다.

✅ @ExtendWith

사용자 정의 확장명을 등록하는데 사용합니다.

✅ @BeforeEach

각 테스트 메서드 전에 실행됨을 나타냅니다.

@AfterEach

각 테스트 메서드 후에 실행됨을 나타냅니다.

✅ @BeforeAll

현재 클래스의 모든 테스트 메서드 전에 실행됨을 나타냅니다.

@AfterAll

현재 클래스의 모든 테스트 메서드 후에 실행됨을 나타냅니다.

@Disable

테스트 클래스 또는 메서드를 비활성화합니다.

🏷️ 테스트 방법

@DisplayName("test 입니다.")
@Test
void test() {
  // given
  // given에서는 값을 초기화 하는 등의 전처리 작업을 한다.
  
  // when
  // when에서는 우리가 목표로 하는 기능을 동작시킨다.
  
  // then
  // then에서는 우리가 원한 결과가 나왔는지 확인한다.
}

📖 Reference

Dahee's_velog

멍토의 IT블로그

✔️ IntelliJ에서 test폴더가 없어서 테스트 환경 설정해야 하는 경우

Joonfluence

'코딩 공부 > web & Java' 카테고리의 다른 글

[Java] 테스트 더블(Test Double) (feat. Mock, Stub)  (1) 2023.12.16
[Java] Mockito  (1) 2023.12.15
[Web] JWT  (1) 2023.12.08
[Spring/Web] CSRF  (1) 2023.12.04
[Spring / Web] CORS  (1) 2023.12.01