인프런 커뮤니티 질문&답변

pwmetus님의 프로필 이미지

작성한 질문수

Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트

테스트 추가하기: h2를 이용한 service 테스트

테스트 메서드 마다 Environment variables 설정이 불편...

해결된 질문

24.06.06 16:47 작성

·

253

·

수정됨

0

강의시나리오 대로 진행하다보니 살짝 불편한 부분이 있어서..

(어쩜 중간에 코멘트가 있었는데 놓친것일 수도..)

서비스 설정 중 메일발송 설정 정보를 실행속성으로 구성하는데

테스트도 동일하게 구성하다보니(test-application.properties )

Intellij >Edit Configurations > JUnit 실행인스턴스 별 Environment variables 를 설정해줘야 실행이 되는듯 합니다.

 

테스트 메서드를 만들때마다 실행인스턴스를 설정해야하는게 불편해서

그냥 메일발송 설정을 test-application.properties 에 하드코딩하고 진행해봅니다.

(혹시.. 다른 더 스마트한 방법이 있을까? Intellij ? spring?)

 

[확인1]

'테스트 추가하기: h2를 이용한 repository 테스트' 강의 1:16초를 보면

git에서 받은 application.properties 파일과 강의의 소스가 다른것 으로 보입니다.

Environment variables 에서 설정한 속성이 없어서 해당 강의에서는 불편함 없이 진행된 것 으로 이해했습니다. 

 

[확인2] 그런데

'토이 프로젝트 살펴보기' 강의 7:42 에 확인되는 설정정보는

git 소스와 동일하것으로 확인됩니다.

강의를 훑어볼때는 그냥 넘어갔는데, 따라하며 보니 눈에 밟히는게 좀 있네요. 

 

  • 제가 놓친부분이라면 양해 바라며, 시나리오 상 연결부분이 필요한 내용이면 코멘트 부탁드립니다.

    저와 같이 길잃은 양들을 살펴주소서~

[git 설정파일]

답변 1

1

인프런 AI 인턴님의 프로필 이미지

2024. 06. 07. 16:51

안녕하세요, 인프런 AI 인턴입니다.

pwmetus님 질문에 대해 안내드리겠습니다.

IntelliJ IDEA에서 테스트 메서드마다 환경 변수(Environment variables)를 설정하는 것이 번거로운 경우, 다음과 같은 방법을 활용할 수 있습니다:

  1. 테스트 범위의 환경 변수를 application.propertiesapplication.yml 파일과 같은 Spring Boot의 외부화된 구성(externalized configuration)을 활용하여 설정합니다. 각 테스트마다 이러한 파일에 필요한 환경 설정을 명시하여 사용할 수 있습니다.

  2. Spring Boot 테스트 유틸리티를 사용하여 특정 테스트 환경변수를 프로그래매틱하게 추가할 수 있습니다. 예를 들어, @TestPropertyValues 애너테이션을 이용하여 테스트 실행 시 특정 환경 변수를 설정할 수 있습니다. 예제 코드는 아래와 같습니다:

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.mock.env.MockEnvironment;
import static org.assertj.core.api.Assertions.assertThat;

class MyEnvironmentTests {

    @Test
    void testPropertySources() {
        MockEnvironment environment = new MockEnvironment();
        TestPropertyValues.of("org=Spring", "name=Boot").applyTo(environment);
        assertThat(environment.getProperty("name")).isEqualTo("Boot");
    }

}

이 방법을 통해, IntelliJ의 실행 설정에서 매번 환경 변수를 지정할 필요 없이 테스트마다 필요한 환경 변수를 간편하게 설정할 수 있습니다.

참조하신 ‘테스트 추가하기: h2를 이용한 repository 테스트’와 ‘토이 프로젝트 살펴보기’ 강의에서 다루는 설정 방법들은 강의 상황에 맞게 최적화된 설정이므로, 각 상황에 맞게 적절한 방법을 선택하여 적용하는 것이 좋습니다.

보다 자세한 정보는 Spring Boot 공식 문서 참조를 권장드립니다:

질문에 대해 충분한 답변이 되었기를 바라며, 추가적인 궁금증이 있으시면 질문해주세요.

pwmetus님의 프로필 이미지

작성한 질문수

질문하기