source

Spring Boot 테스트 - bootstrap.properties 재정의

nicesource 2023. 7. 3. 22:56
반응형

Spring Boot 테스트 - bootstrap.properties 재정의

스프링 부트 앱에서 bootstrap.properties를 사용하여 스프링 클라우드 구성 관련 속성을 구성하고 있습니다.

장치 테스트를 위해 구성 서버에 연결하지 않기 때문에 테스트 중에 이러한 속성을 무시하려고 합니다.그래서 우리는 메인에서 속성을 완전히 취소하는 방법을 찾고 있습니다.bootstrap.properties선택적 특성을 재지정하거나 테스트를 위해 새 특성을 제공합니다.

생성을 시도했습니다.src/test/resources/bootstrap.properties,src/test/resources/bootstrap-test.properties와 함께spring.cloud.config.enabled=false하지만 작동하지 않았습니다.

우리는 테스트 클래스를 시작하기 전에 아래와 같이 설정하려고 했습니다.

static {
    System.setProperty("spring.cloud.config.enabled", "false");
}

효과가 없었어요

Spring Boot 설명서는 application.properties의 작동 방식에 대해 꽤 잘 알고 있지만, 다음에 대한 참조는 하나도 찾을 수 없었습니다.bootstrap.properties.

모든 도움은 신뢰할 수 있는 방법으로 무시해 주시면 감사하겠습니다.bootstrap.properties시험 중에

사용 중인 경우@SpringBootTest주석에서 속성을 재정의할 수 있습니다.bootstrap.properties다음을 포함합니다.

@SpringBootTest(properties = "spring.cloud.config.enabled=false")

그렇지 않으면 다음을 수행할 수 있습니다.

  1. 더하다@ActiveProfiles('test')당신의 시험 수업에
  2. 이름이 지정된 파일 만들기bootstrap-test.properties
  3. 덮어쓸 속성을 추가합니다(예: spring.cloud.config.enabled=false

업데이트: 모든 테스트에 대해 스프링 클라우드 구성을 사용하지 않도록 설정하려면 간단히bootstrap.properties마음속에test/resources다음 속성을 가진 폴더:

spring.cloud.config.enabled=false

(여기에 나의 질문을 추가합니다)

많은 시도와 오류 후 스프링 프로파일을 다음과 같이 설정함으로써 발견되었습니다.test그것은 실제로 그것을 선택합니다.bootstrap-test.properties그리고 그것을 메인과 결합합니다.bootstrap.properties파일.

이 경우, 설정spring.cloud.config.enabled=false메인 부트스트랩에 설정된 것처럼 여전히 부트스트랩을 시도하고 있었습니다.spring.cloud.config.server.bootstrap = true그래서 우리는 이 속성을 거짓으로 설정해야 했습니다.bootstrap-test.properties완전히 비활성화된 클라우드 서버로 이동합니다.

이것이 누군가에게 도움이 되기를 바랍니다.

수동 테스트를 위해 로컬 application.yml 및 bootstrap.yml 파일을 작업 디렉토리의 루트에 추가했습니다.application.yml에는 다음과 같은 단일 행이 포함됩니다.

spring.cloud.bootstrap.location: file:.

이 설정은 작업 디렉토리의 로컬 bootstrap.yml 파일을 활성화하고 클래스 경로의 파일을 비활성화합니다.이 아이디어는 스프링 부츠 2 #466에서 나왔습니다.

언급URL : https://stackoverflow.com/questions/41985262/spring-boot-test-overriding-bootstrap-properties

반응형