카테고리 없음

[SpringBoot] Junit 테스트

codi-3 2024. 9. 24. 08:58

JUnit과 Spring을 함께 사용하는 것은 스프링 애플리케이션의 테스트를 보다 효율적으로 작성하는 방법이다. 이를 통해 애플리케이션의 각 컴포넌트가 예상대로 동작하는지 검증할 수 있습니다. Spring에서는 JUnit을 기반으로 한 테스트 환경을 쉽게 설정할 수 있도록 다양한 기능을 제공한다.

 

JUnit이란?

  • JUnit: Java 언어를 위한 가장 인기 있는 단위 테스트 프레임워크이다. 개발자가 개별 메서드를 테스트할 수 있게 해주며, 테스트 주도 개발(TDD)을 지원한다.

Spring과 JUnit의 통합

Spring 프레임워크는 JUnit을 기반으로 애플리케이션 컨텍스트를 로드하고 의존성 주입을 통해 테스트할 수 있는 환경을 제공한다. 이를 통해 Spring 애플리케이션의 각 컴포넌트를 독립적으로 테스트할 수 있다.

기본 설정

1) 의존성 추가 (Maven 또는 Gradle)

Spring과 JUnit을 함께 사용하려면 프로젝트에 필요한 의존성을 추가해야 한다.

Gradle (build.gradle):
dependencies {
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.0'
}

 

Spring JUnit 테스트 설정 

Spring에서는 @SpringBootTest와 같은 어노테이션을 사용하여 스프링 애플리케이션 컨텍스트를 로드한 상태에서 테스트를 수행할 수 있다.

 

예시 코드

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.test.context.SpringBootTest;
import static org.mockito.Mockito.when;
import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
class MyServiceTest {

    @Autowired
    private MyService myService;

    @MockBean
    private MyRepository myRepository;

    @Test
    void testServiceMethod() {
        // Mock 설정
        when(myRepository.findData()).thenReturn("Mock Data");

        String result = myService.processData();
        assertEquals("Processed: Mock Data", result);
    }
}

 

주요 어노테이션

  • @SpringBootTest: 스프링 부트 애플리케이션의 전체 컨텍스트를 로드하여 통합 테스트를 수행할 수 있게 해준다.
  • @MockBean: 스프링의 의존성 주입 시스템에서 가짜(mock) 객체를 생성하여 테스트에 사용할 수 있게 해준다.
  • @BeforeEach: 각 테스트가 실행되기 전에 실행될 메서드를 정의한다.
  • @AfterEach: 각 테스트가 실행된 후에 실행될 메서드를 정의한다.
  • @Test: 테스트 메서드를 정의한다.