Java

Junit

NellKiM 2024. 12. 5. 09:37

JUnit은 Java 프로그래밍 언어를 위한 단위 테스트(Unit Testing) 프레임워크, 단위 테스트는 소프트웨어의 작은 단위(주로 클래스나 메서드)를 독립적으로 테스트하여 올바르게 동작하는지 확인하는 과정, JUnit은 테스트 자동화를 지원하며, 소프트웨어 개발 과정에서 테스트를 쉽고 체계적으로 실행할 수 있도록 도와줍니다.

주요 특징

  1. 애너테이션 기반 테스트:
    • JUnit은 애너테이션을 활용하여 테스트 메서드를 정의
      • @Test: 테스트 메서드를 나타냅니다.
      • @BeforeEach / @AfterEach: 각 테스트 전에/후에 실행되는 메서드.
      • @BeforeAll / @AfterAll: 모든 테스트 전에/후에 한 번 실행되는 메서드.
  2. 자동화된 테스트:
    • 개발자가 명시한 테스트를 자동으로 실행하고 결과를 확인함
  3. Assertions 지원:
    • assertEquals, assertTrue, assertFalse, assertThrows 등 다양한 메서드로 기대값과 실제값을 비교하여 테스트의 성공 여부를 판단
  4. 통합 도구와의 호환성:
    • JUnit은 Gradle, Maven과 같은 빌드 도구 및 Jenkins와 같은 CI/CD 도구와 통합되어 효과적인 테스트 및 배포 환경을 구축
  5. 테스트 스위트 구성:
    • 여러 테스트 클래스를 묶어서 테스트 스위트를 구성하여, 테스트를 그룹화하고 관리

JUnit의 버전

  • JUnit 4:
    • 애너테이션 기반의 구조가 도입되었으며 널리 사용
  • JUnit 5 (Jupiter):
    • 더 유연하고 확장성이 높은 새로운 아키텍처를 도입.
    • JUnit Platform, JUnit Jupiter, JUnit Vintage로 구성.
    • Java 8 이상의 기능을 활용하여 더 나은 기능 제공.

간단한 예제

1. Maven으로 JUnit 5 의존성 추가

 
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.10.0</version>
    <scope>test</scope>
</dependency>

2. 테스트 코드 작성

@Test
	public void arg4() {
		boardRepo.findByTitleEndingWithAndBnoBetweenOrderByBnoDesc("7", 500L, 600L).forEach(board->{
			log.info(board.toString());
		});
	}

 

JUnit을 사용하는 이유

  1. 코드 품질 향상: 단위 테스트를 통해 잠재적인 버그를 사전에 발견.
  2. 빠른 피드백 루프: 개발 단계에서 코드 수정이 필요한 부분을 빠르게 확인.
  3. 유지보수 용이성: 코드 변경 시 기존 기능이 깨지지 않음을 보장.
  4. 자동화된 테스트: 반복적인 수작업 테스트를 자동화하여 생산성 향상.