-
테스트 진행시 @Value (application.properties.yml) 값을 읽지 못할 때 (NullPointerException)Spring 2022. 3. 4. 23:22
서비스 계층 테스트를 진행하려고 하는데 @Value값을 사용하는 경우
테스트 진행시 값이 없어 null pointer exception 이 발생하게 되었다. ( 프로퍼티 값이 로드되지 않기 때문!)
( 추가로 테스트 진행시 Mockiito를 사용하지 않는다면 @TestPropertySource어노테이션을 이용해 테스트 프로퍼티 소스를 따로 분리할 수도 있다. )
기존 코드
@Service public class ProductService { @Value("${AWS_S3_BUCKET_URL}") private String AWS_S3_BUCKET_URL; //... }
수정한 코드
@Service public class ProductService { private String bucketUrl; public ProductService( @Value("${AWS_S3_BUCKET_URL}") String bucketUrl) { this.bucketUrl = bucketUrl; } //... }
해당 값을 생성자 주입 의존할때 @Value값을 통해서 실제 값을 넣어주도록 바꿔준다.
테스트 코드
@SpringBootTest @ExtendWith(MockitoExtension.class) @RunWith(SpringRunner.class) @Transactional class ProductServiceTests{ @InjectMocks private ProductService productService = ("AwsValue");//다른 의존관계와 함께 넣어주면 됨 //... }
생성자 의존관계주입시 원하는 값을 넣어 테스트를 진행하면 된다.
( 참고한 사이트 )
https://tecoble.techcourse.co.kr/post/2020-09-21-application-properties/
'Spring' 카테고리의 다른 글
PUT vs PATCH (0) 2022.03.21 Repository Layer의 단위테스트 작성 (0) 2022.03.11 Service 계층에서 다른 Service 혹은 Repository (2) 2022.03.04 ExistsBy쿼리를 직접 작성하기 (0) 2022.03.04 Validation failed for query for method public abstract 오류 발생시 (JPA) (0) 2022.03.04