Spring Boot 테스트 클래스는 애플리케이션 컨텍스트를 재사용하여 테스트 실행을 고속화할 수 있습니까?
@ContextConfiguration
spring 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
'programing' 카테고리의 다른 글
항상 소수점 2자리 숫자 표시항상 소수점 2자리 숫자 표시 (0) | 2023.03.07 |
---|---|
복잡한 콘텐츠 필터를 작성하는 가장 효율적인 방법은 무엇입니까? (0) | 2023.03.07 |
판다들은 네스트된 json을 읽는다. (0) | 2023.03.07 |
스핀(비지) 컨트롤이 있는 angular.element vs document.getElementById 또는 jQuery 셀렉터 (0) | 2023.03.07 |
AngularJS 지시:링크 기능과 컴파일 기능은 함께 작동합니까? (0) | 2023.03.07 |