1. 소개
이 짧은 튜토리얼에서 우리는 Spring Boot 의 테스트 프레임 워크 의 지원 능력 과 단위 테스트 용이든 통합 테스트 용이든 Spock 프레임 워크 의 표현력을 결합 할 때의 이점을 보여줄 것 입니다.
2. 프로젝트 설정
간단한 웹 애플리케이션부터 시작하겠습니다. 인사를하고 인사를 변경하고 간단한 REST 호출을 통해 기본값으로 재설정 할 수 있습니다. 메인 클래스 외에도 간단한 RestController 를 사용하여 기능을 제공합니다.
@RestController
@RequestMapping("/hello")
public class WebController {
@GetMapping
public String salutation() {
return "Hello world!";
}
}
그래서 컨트롤러는 'Hello world!'로 인사합니다. @RestController의 어노테이션과 바로 가기 어노테이션 나머지 엔드 포인트 등록을 확인합니다.
3. Spock 및 Spring Boot 테스트를위한 Maven 의존성
먼저 Maven 의존성을 추가하고 필요한 경우 Maven 플러그인 구성을 추가합니다.
3.1. Spring 지원으로 Spock 프레임 워크 의존성 추가
들어 스팍 자체 와 대한 Spring 지원 우리는 두 의존성이 필요합니다 :
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.2-groovy-2.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-spring</artifactId>
<version>1.2-groovy-2.4</version>
<scope>test</scope>
</dependency>
로 지정된 버전은 사용 된 그루비 버전에 대한 참조입니다.
3.2. 스프링 부트 테스트 추가
Spring Boot Test 의 테스트 유틸리티를 사용 하려면 다음 의존성이 필요합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
3.3. Groovy 설정
스팍을 기반으로하기 때문에 그리고 그루비 , 우리는 추가하고 구성해야 gmavenplus 뿐만 아니라 -plugin 우리의 테스트에서이 언어를 사용할 수 있도록를 :
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<goals>
<goal>compileTests</goal>
</goals>
</execution>
</executions>
</plugin>
테스트 목적으로 Groovy 만 필요하므로 플러그인 목표를 compileTest로 제한합니다 .
4. Spock 테스트에서 ApplicationContext 로드
한 가지 간단한 테스트는 Spring 애플리케이션 컨텍스트의 모든 Bean이 생성되었는지 확인하는 것입니다 .
@SpringBootTest
class LoadContextTest extends Specification {
@Autowired (required = false)
private WebController webController
def "when context is loaded then all expected beans are created"() {
expect: "the WebController is created"
webController
}
}
이 통합 테스트를 위해 우리 는 @SpringBootTest가하는 일인 ApplicationContext 를 시작해야합니다 . Spock은 " when" , " then" 또는 " expect" 와 같은 키워드를 사용하여 테스트에서 섹션 구분을 제공합니다 .
또한 여기에서 테스트의 마지막 줄인 Groovy Truth 를 이용 하여 빈이 null인지 확인할 수 있습니다.
5. Spock 테스트에서 WebMvcTest 사용
마찬가지로 WebController 의 동작을 테스트 할 수 있습니다 .
@AutoConfigureMockMvc
@WebMvcTest
class WebControllerTest extends Specification {
@Autowired
private MockMvc mvc
def "when get is performed then the response has status 200 and content is 'Hello world!'"() {
expect: "Status is 200 and the response is 'Hello world!'"
mvc.perform(get("/hello"))
.andExpect(status().isOk())
.andReturn()
.response
.contentAsString == "Hello world!"
}
}
Spock 테스트 (또는 스펙) 에서 익숙한 Spring Boot 테스트 프레임 워크 의 모든 익숙한 어노테이션을 사용할 수 있다는 점에 유의하는 것이 중요 합니다.
6. 결론
이 기사에서는 Spock과 Spring Boot 테스트 프레임 워크를 결합하여 사용하도록 Maven 프로젝트를 설정하는 방법을 설명했습니다. 또한 두 프레임 워크가 서로를 완벽하게 보완하는 방법을 확인했습니다.
더 자세히 알아 보려면 Spring Boot를 사용한 테스트 , Spock 프레임 워크 및 Groovy 언어 에 대한 자습서 를 참조하십시오 .
마지막으로 추가 예제가 포함 된 소스 코드는 GitHub 저장소 에서 찾을 수 있습니다 .