본문 바로가기
[SpringBoot]

@Autowired 의존성 주입이 안된다면 / NULL

by Hevton 2022. 12. 8.
반응형

 

스프링 부트 테스트 중에

@Autowired로 의존성을 주입했는데도 불구하고 디버깅을 찍어보면 NULL로 인해 테스트가 정상적으로 실행되지 않는 경우가 있다.

 

그럴 때엔, 아마도 @SpringBootTest 어노테이션 대신에

@Runwith(SpringRunner.class)를 넣으면 될 것이다. 그 이유는 무엇이냐,,,,

 

단위테스트는 junit을 이용하게 되는데, Runwith는 junit version 4에 이용되는 방식이고

SpringBootTest는 junit version 5에 이용되는 방식이다.

 

junit 버전에 따라 어노테이션이나 assertion 이런 부분이 차이가 있다.

 

지금 build.gradle 에 버전 문제가 있다는 것이다. 따라서 @SpringBootTest를 지원하지 않는 상태인 것

 

만약 build.gradle에, 이 junit4에 대한 dependencies가 있다면 과감하게 주석처리 해준다.

dependencies {
    // testCompile group: 'junit', name: 'junit', version: '4.12'
}

 

그리고 build.gradle 맨 아래에 이걸 추가해준다.

tasks.named('test') {
    useJUnitPlatform()
}

 

전체 코드는 이러한 식이 될 것이다.

.
.
.
// 여러 코드

dependencies {
// 각자의 dependencies들이 적혀 있겠음.
// 각자의 dependencies들이 적혀 있겠음.
// 각자의 dependencies들이 적혀 있겠음.
}


// 이 부분 추가를 잊지 않는다.
tasks.named('test') {
    useJUnitPlatform()
}

 

이제 다시 @SpringBootTest 어노테이션을 이용하면 문제없이 진행된다.

@Runwith는 쓸 필요 없다.

반응형