programing

스프링 부트 응용 프로그램-test.properties

powerit 2023. 9. 15. 21:25
반응형

스프링 부트 응용 프로그램-test.properties

junit을 사용하여 spring-boot 애플리케이션을 유닛 테스트하려고 합니다.application-test.properties를 src/test/resource 아래에 두었습니다.application.properties를 읽는 Application Configuration Class가 있습니다.

제 시험 수업은 이런식입니다.

@RunWith(SpringRunner.class)
@SpringBootTest(classes=ApplicationConfiguration.class)
@TestPropertySource(locations = "classpath:application-test.properties")
@ActiveProfiles("test")
   public class TestBuilders {
      @Autowired
      private ApplicationConfiguration properties;

속성을 읽으려고 하면 항상 null입니다.

내 애플리케이션 구성 클래스는 다음과 같습니다.

@Configuration
@ConfigurationProperties
@PropertySources({
    @PropertySource("classpath:application.properties"),
    @PropertySource(value="file:config.properties", ignoreResourceNotFound = 
        true)})
public class ApplicationConfiguration{
    private xxxxx;
    private yyyyy;

구글에서 찾은 가능한 모든 방법을 시도했습니다.운이 없습니다.도와주세요!미리 감사드립니다.

문제는 당신이 가지고 있지 않다는 것입니다.@EnableConfigurationProperties시험 시간에 말입니다.
응용 프로그램을 로드하면 메인 클래스에서 시작합니다.@SpringBootApplication당신이 가질 수 있는 곳에@EnableConfigurationProperties따라서 응용 프로그램을 시작할 때 작동합니다.
반면에 테스트를 실행할 때는ApplicationConfiguration여기에 지정한 클래스

@SpringBootTest(classes=ApplicationConfiguration.class)

Spring은 Enable Configuration Properties(구성 속성)를 사용해야 하므로 필드가 주입되지 않으므로 null이 됩니다.하지만 봄은 당신의 것을 읽고 있습니다.application-test.propertiesfile. 이것은 당신의 테스트 클래스에서 값을 직접 주입하는 것만으로도 확인할 수 있습니다.

@Value("${xxxxx}")
private String xxxxx;

여기서 값이 주입됩니다.하지만 학생들에게 주입하는 것은ConfigurationProperties를 사용하여 활성화해야 합니다.@EnableConfigurationProperties

놓다@EnableConfigurationProperties시험 시간에 모든 것이 잘 됩니다.

언급URL : https://stackoverflow.com/questions/48111941/spring-boot-application-test-properties

반응형