JUnit 이란?

JUnit은 자바 언어용 단위 테스트 프레임워크입니다. 단위 테스트는 개발자가 자동화된 단위 테스트를 작성하게 도와줍니다. 이를 통해서 코드 품질을 향상시킬 수 있습니다. JUnit은 코드를 리팩토링 하거나 기능을 추가하거나 할때 이전에 작성된 테스트 코드가 작동하는지 확인함으로써 코드 일관성에도 도움을 주게 됩니다. 

JUnit 특징

  • 사용이 쉽습니다. 개발자가 테스트 케이스를 작성하기 용이합니다. 
  • 자동화된 테스트가 가능합니다. 코드 커버리지를 보장할 수 있습니다. 
  • 테스트 코드 재사용성이 가능합니다. JUnit은 단위 테스트이기 때문에 독립적으로 실행할 수 있습니다. 그래서 코드를 재사용하기 용이합니다. 
  • 테스트 코드 가독성 : JUnit 테스트 결과 쉽게 이해하는데 도움이 됩니다. 

JUnit 버전

  • JUnit 3: JUnit의 초기 버전으로, Java 1.2와 호환됩니다. 이 버전에서는 TestSuite, TestCase 및 assert 메서드를 사용하여 테스트를 작성합니다.
  • JUnit 4 : JUnit 4.x는 Java 5 이상을 지원합니다. 이 버전에서는 @Test, @Before, @After, @BeforeClass, @AfterClass 및 assert 메서드를 사용하여 테스트를 작성합니다.Unit 5.x: JUnit 5.x는 Java 8 이상을 지원합니다. 이 버전에서는 Jupiter API를 사용하여 테스트를 작성할 수 있습니다. Jupiter API는 @Test, @BeforeEach, @AfterEach, @BeforeAll, @AfterAll 및 assert 메서드와 같은 주요 어노테이션과 함께 확장 가능한 테스트 인터페이스를 제공합니다.
  • JUnit 5 : JUnit 5.x는 Java 8 이상을 지원합니다. 이 버전에서는 Jupiter API를 사용하여 테스트를 작성할 수 있습니다. Jupiter API는 @Test, @BeforeEach, @AfterEach, @BeforeAll, @AfterAll 및 assert 메서드와 같은 주요 어노테이션과 함께 확장 가능한 테스트 인터페이스를 제공합니다.

JUnit 사용하기

1. 의존성 추가

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

2. 테스트 클래스 작성

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class MyTest {
    
    @Test
    public void testAddition() {
        assertEquals(2, 1 + 1);
    }
    
}

 

JUnit 지원 메소드

@Test: @Test 애노테이션은 테스트 메소드를 지정합니다. 

@BeforeEach: @BeforeEach 애노테이션은 각각의 @Test 메소드가 실행되기 전에 실행되는 메소드를 지정하게 됩니다. 이 메소드를 사용하여 테스트 데이터를 초기화하거나 테스트 환경을 설정할 수 있습니다.

@AfterEach: @AfterEach 애노테이션은 각각의 @Test 메소드가 실행된 후에 실행되는 메소드를 지정하게 됩니다.. 이 메소드를 사용하여 테스트 후처리를 수행하거나 테스트 환경을 해제할 수 있습니다.

@BeforeAll: @BeforeAll 애노테이션은 모든 테스트 메소드가 실행되기 전에 한 번만 실행되는 메소드를 지정하게 됩니다.. 이 메소드를 사용하여 테스트 환경을 설정하거나 데이터를 초기화할 수 있습니다.

@AfterAll: @AfterAll 애노테이션은 모든 테스트 메소드가 실행된 후에 한 번만 실행되는 메소드를 지정하게 됩니다.. 이 메소드를 사용하여 테스트 후처리를 수행하거나 테스트 환경을 해제할 수 있습니다.

@Disabled: @Disabled 애노테이션은 테스트를 비활성화합니다. 이 애노테이션이 붙은 메소드는 테스트 도구에서 실행되지 않습니다.

@ParameterizedTest: @ParameterizedTest 애노테이션은 매개변수화된 테스트를 수행할 때 사용됩니다. 이 애노테이션은 여러 개의 매개변수를 받는 테스트 메소드를 생성합니다.

@RepeatedTest: @RepeatedTest 애노테이션은 반복적인 테스트를 수행할 때 사용됩니다. 이 애노테이션은 지정된 횟수만큼 테스트 메소드를 반복 실행합니다.

JUnit 사용 시 주의사항

  • 메소드 순서가 보장되지 않는다.
  • 상태를 공유하게 만들어서는 안된다. 특히, 변수값
  • 예외 처리를 하는것이 좋습니다. 예외가 발생하면 테스트 코드가 중단됩니다.
  • 테스트 코드 작성의 목적은 테스트 목적을 쉽게 하기 위함입니다. 테스트 결과를 충분히 검증해야 합니다.
  • 테스트 메소드 이름을 명확하게 작성해야 합니다.
  • 테스트 커버리지를 충분히 높여야 합니다. 

'IT' 카테고리의 다른 글

패션 관련 프로젝트를 진행하며 ... 1 (feat. 500 maker)  (3) 2024.01.14
Java 버전업 (11->17) 후기 켁;  (1) 2024.01.07
캐시방법  (0) 2023.03.11
Spring Bean  (0) 2023.02.04
카프카 스터디를 시작하며  (0) 2022.12.03