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>spring–boot–starter–test</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 애플리케이션에서 효과적인 테스트 전략을 구현하기 위한 시작점을 제공합니다.