programing

Spring Boot 테스트 클래스는 애플리케이션 컨텍스트를 재사용하여 테스트 실행을 고속화할 수 있습니까?

i4 2023. 3. 7. 21:05
반응형

Spring Boot 테스트 클래스는 애플리케이션 컨텍스트를 재사용하여 테스트 실행을 고속화할 수 있습니까?

@ContextConfigurationspring boot 연동 테스트에서는 location Atribute가 의미가 없습니다.여러 테스트 클래스에서 응용 프로그램 컨텍스트를 재사용할 수 있는 다른 방법이 있습니까?@SpringBootTest?

네, 사실 기본 동작입니다.이 링크는 Spring Framework 문서를 가리키며, Spring Boot에서 후드 아래에 사용됩니다.

BTW, 컨텍스트는 디폴트로 재사용됩니다.@ContextConfiguration사용하기도 합니다.

구글에서 내려오는 저 같은 분들을 위해:

가지고 계신 경우<reuseFork>false</reuseFork>Maven surefire 플러그인에서는 각 테스트 클래스에 대해 새로운 JVM을 효과적으로 생성하기 때문에 컨텍스트를 재사용할 가능성이 없습니다.

이는 Spring Documentation(https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#testcontext-ctx-management-caching에 잘 설명되어 있습니다.

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)

위의 주석은 전체 컨텍스트가 로드되고 테스트 전체에서 동일한 컨텍스트가 사용됨을 나타냅니다.한 번만 로드된다는 의미입니다.

스프링 부트는 @Spring Boot을 제공합니다.스프링 부트 기능이 필요한 경우 표준 스프링 테스트 @ContextConfiguration 주석 대신 사용할 수 있는 주석을 테스트합니다.주석은 Spring Application을 통해 테스트에서 사용되는 ApplicationContext를 생성함으로써 작동합니다.

Google에서 도착하여 여러 응용 프로그램 컨텍스트를 시작하는 데 문제가 있는 경우 다음 사항에 주의하십시오.

@SpringBoot을 사용할 때는 반드시 다음 사항을 확인하십시오.동일한 속성을 사용하는지 여러 번 테스트합니다.예: 간단한 테스트를 사용하여 한 번 테스트하는 경우@SpringBootTest또 다른 하나는@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)각각 독자적인 콘텍스트를 전개합니다!

가장 쉬운 것은 이 제품을 사용하는 것입니다.BaseIntegrationTest모든 통합 테스트에서 확장한 클래스 및@SpringBootTest기본 클래스에 대한 주석. 예:

package com.example.demo;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public abstract class BaseIntegrationTest{
}

우리에게 있어서, 문제는@ConfigurationPropertiesScan한 테스트에 표시되지만 다른 테스트에는 표시되지 않습니다.Roshan Kumar의 답변은 단서를 제공했다.

언급URL : https://stackoverflow.com/questions/44180815/can-spring-boot-test-classes-reuse-application-context-for-faster-test-run

반응형