단위 테스트에서의 AutoWired(IllegalArgumentException)

lv2dev·2024년 2월 6일
0

Properties에 secret key를 정의하고 그것을 바탕으로 토큰을 생성하는 메서드를 만든 뒤 테스트를 하려고 하는데 IllegalArgumentException 오류가 발생했다.

시도

  • properties에서 값을 불러오지 못하는 것이라고 판단했다.
  • 테스트에서 프로퍼티 값을 사용하려면 @TestPropertySource 를 사용해 테스트에 사용할 프로퍼티 파일을 지정하거나, @SpringBootTest 어노테이션을 사용해 전체 Spring 컨텍스트를 로드하면 된다고 한다. (실패)
  • src/test/resources 아래에 단위테스트용 application.properties를 추가하는 방법이 있다.(실패)

해결

  • 혹시나 해서 @Autowired를 tokenService에 붙여봤더니 해결되었다.
  • Autowired 어노테이션은 Spring 컨텍스트 없이는 작동하지 않는다. 즉 단위테스트에서 Autowired 어노테이션은 자동으로 작동하지 않는다는 뜻이다.
  • 아래와 같이 수정해 해결했다.
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class TokenServiceTest {

    @Autowired
    @InjectMocks
    private TokenService tokenService;

    @MockBean
    private MemberRepository memberRepository;

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

    private Member member;
profile
언제나 레벨업을 하고 싶은 영원한 lv1

0개의 댓글