JVM/JUnit

[JUnit] 소개 - 1. 테스트 종류와 JUnit 이란

헹창 2022. 11. 1.
반응형

테스트의 종류

단위 테스트 (Unit Test) - TDD

  • 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상 동작을 검증하는 테스트
  • 테스트 대상 단위
    • 클래스
    • 메소드
  • 테스트 단위의 크기 작을수록 복잡성이 낮아지고, 테스트 활용이 더 쉬워진다.

통합 테스트 (Integration Test)

  • 단위 테스트보다 더 큰 동작을 위해 여러 모듈을 모아 의도대로 협력하는 지 검증하는 테스트
  • 외부 라이브러리(API, DB 등..)까지 묶어 검증할 때 사용한다.
  • 단위 테스트보다 더 많은 코드를 테스트하기 때문에 신뢰성이 떨어진다.
  • 또한, 에러 발생 시 확인이 쉽지 않아 유지보수가 힘들다.

인수 테스트 (Acceptance Test)

  • 사용자 시나리오에 맞춰 수행하는 테스트
  • 단위/통합 테스트와 달리 비즈니스에 초점을 둔다
  • 주로 API를 확인하는 방식으로 이뤄진다.

JUnit

  • 자바 개발자의 93% 사용하는 단위 테스트 프레임워크
  • 테스트 결과는 Test Class로 개발자에게 테스트 방법 및 클래스의 이력 공유 가능
  • Assert 메서드로 테스트 케이스의 수행 결과 판별
  • 어노테이션으로 간결하게 지원 (JUnit4 부터)
  • JUnit5는 SpringBoot 2.2 버전 이후 기본으로 의존성 추가됨
  • JUnit4 Test → JUnit5 Test 자동 변환 방법
    • JUnit4 Test Class 이름에 커서 두고 ALT + ENTER 혹은 COMMAND + ENTER 
    • 하단에 변환된 항목을 확인한 후 DO REFACTOR 클릭 시 자동 변환

build.gradle

// JUnit5를 사용하기 위해 JUnit4 제외 (exclude) 한다.
testImplementation("org.springframework.boot:spring-boot-starter-test") {
    exclude module: 'junit'
}

Assert 요약

  • assertArrayEquals(a, b) : 배열 a, b 일치 여부 확인
  • assertEquals(a, b) : 객체 a, b 일치 여부 확인
  • assertTrue(a) : 조건 a 참인지 확인
  • assertNotNull(a) : 객체 a 가 null 아닌지 확인

Annotation 요약

  • @Test : 테스트 만드는 역할
  • @DisplayName : 테스트 클래스/메서드의 사용자 정의 이름 표시
  • @DisplayNameGeneration
  • @BeforeEach / @AfterEach : 각 테스트 메서드 전/후 실행
  • @BeforeAll / @AfterAll : 모든 테스트 메서드 전/후 실행
  • @Disabled : 테스트 클래스/메서드 비활성화
  • @RepeatedTest / @PamaeterizedTest & @ValueSource : 테스트 반복 어노테이션
  • @Nested

 

728x90
반응형

댓글

추천 글