본문 바로가기

자바(JAVA)/스프링(Spring) & 스프링부트(Spring Boot)

Spring Boot properties 값 가져오기 JUnitTest

Spring Boot properties 값 가져오는 방법 JUnit Test

개발환경

Spring boot : 3.0.6

Maven

Ecplipse 2023-3

Java 17

Swagger UI (springdoc-openapi-starter-webmvc-ui 2.0.2)

 

 

[1] application.properties 값 가져오는 방법

 

application.properties 파일에 아래와 같이 작성

 

# user Info
app.myname = app

 

Junit Test 파일을 아래와 같이 작성

 

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoManagerApplicationTests
{

    // application.properties
    @Value("${app.myname}")
    public String appName; 

    @Test
    void contextLoads()
    {
    }

    @Test
    void getPropertyNameTest()
    {
        System.out.println("--test--");       
        System.out.println(appName);
    }

}

 

 

[2] 사용자 정의 properties 값 가져오는 방법

 

사용자 정의 properties 작성

 

예시) demo.properties

 

# demo info
custom.myname = demo

 

스프링이 해당 파일을 찾을 수 있도록 PropertiesFactoryBean 을 리턴하는 구성파일을 작성한다.

 

import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

@Configuration
public class PropertyConfig
{
    @Bean(name = "demo")
    PropertiesFactoryBean demoPropertiesFactoryBean()
    {
        PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();

        ClassPathResource classPathResource = new ClassPathResource("demo.properties");
        propertiesFactoryBean.setLocation(classPathResource);

        return propertiesFactoryBean;
    }
}

 

 

Junit Test 파일을 아래와 같이 작성

 

 

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoManagerApplicationTests
{ 
    // 사용자 설정 properties
    @Value("#{demo['custom.myname']}")
    public String customName;
   

    @Test
    void contextLoads()
    {
    }

    @Test
    void getPropertyNameTest()
    {
        System.out.println("--test--");
        System.out.println(customName);
    }

}