Spring Boot 고급 기능 탐구 : with Java (3)

5. Spring Boot 프로필 사용하기

  • 기능 설명: 다양한 환경에서 애플리케이션의 동작을 관리하는 방법입니다.
  • 적용 방법: 다양한 프로필을 만들고 활성화하는 방법을 알아봅니다.
  • 샘플 소스: Spring Boot 프로필

스프링 부트 테스트 설정

. 테스트 종속성 추가

Spring Boot의 테스트 지원에는 특정 종속성이 필요합니다. Maven의 경우 pom.xml에 다음을 추가합니다.

1
2
3
4
5
6
7
8
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>springbootstartertest</artifactId>
        <scope>test</scope>
    </dependency>
    <! … other dependencies … >
</dependencies>
cs

 

Gradle의 경우 build.gradle에 다음을 추가하세요.

1
2
3
4
dependencies {
    testImplementation ‘org.springframework.boot:spring-boot-starter-test’
    // … other dependencies …
}
cs

 

. 간단한 단위 테스트 작성

애플리케이션에 서비스 클래스가 있다고 가정합니다.

1
2
3
4
5
6
7
8
import org.springframework.stereotype.Service;
@Service
public class GreetingService {
    public String greet() {
        return “Hello, World”;
    }
}
cs

 

이 서비스에 대한 단위 테스트를 작성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class GreetingServiceTest {
    private GreetingService service = new GreetingService();
    @Test
    public void greetShouldReturnHelloWorld() {
        assertThat(service.greet()).isEqualTo(“Hello, World”);
    }
}
cs

 

. 웹 레이어에 대한 통합 테스트

애플리케이션에 컨트롤러가 있는 경우 @WebMvcTest를 사용하여 테스트할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
@WebMvcTest
public class MyControllerTest {
    @Autowired
    private MockMvc mockMvc;
    @Test
    public void indexShouldReturnDefaultMessage() throws Exception {
        this.mockMvc.perform(MockMvcRequestBuilders.get(“/”))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.content().string(“Hello, World”));
    }
}
cs

 

이 테스트는 전체 컨텍스트가 아닌 웹 레이어만 인스턴스화하므로 테스트가 더 빠르고 집중적으로 이루어집니다.

 

. 데이터 액세스 계층 테스트

리포지토리의 경우 Spring Boot는 @DataJpaTest를 제공합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(SpringExtension.class)
@DataJpaTest
public class MyRepositoryTest {
    @Autowired
    private MyRepository myRepository;
    @Test
    public void whenCalledSave_thenCorrectNumberOfUsers() {
        myRepository.save(new User(“John”“john@example.com”));
        assertThat(myRepository.findAll()).hasSize(1);
    }
}
cs

 

@DataJpaTest는 인메모리 데이터베이스를 구성하고, @Entity 클래스를 검색하고, Spring Data JPA 저장소를 구성합니다.

. 테스트 실행

테스트 실행: IDE 또는 빌드 도구를 사용하여 테스트를 실행합니다. 예를 들어 Maven을 사용하면 mvn 테스트를 실행할 수 있습니다.

결과 확인: 테스트가 예상대로 통과했는지 확인하세요. 테스트가 실패하면 애플리케이션 로직 중 조정이 필요한 부분에 대한 귀중한 피드백을 제공합니다.

Spring Boot의 테스트 프레임워크는 JUnit, Mockito 및 AssertJ와 같은 라이브러리와 원활하게 통합되어 단위 및 통합 테스트를 위한 강력한 플랫폼을 제공합니다. 이 샘플 소스는 Spring Boot 애플리케이션에서 효과적인 테스트 전략을 구현하기 위한 시작점을 제공합니다.

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다