[JAVA Junit] Error: No ParameterResolver registered for parameter 에러 원인
개요
Junit Test를 하면서, No ParameterResolver registerd for parameter가 발생한 원인중 하나에 대해 기록한다.
소개
1. 문제 원인
@Test
@ParameterizedTest
@NullSource
@ValueSource(strings = {"-1","-1000000"})
void 테스트(BigDecimal 테스트값) {
Assertions.assertThrows(RuntimeException.class, () ->
test.validateTest(테스트값)
);
}
위의 코드는 ParameterizedTest와 ValueSource 및 NullSource @Annotation을 통해 파라미터가 있는 함수의 테스트를 편하게 하기 위한 코드였다.
이때, @Test Annotation을 무의식적으로 삽입하였는데, 아래와 같이 테스트가 두번 실행되면서 한번은 성공 한번은 실패를 하였다.
문제의 원인은 아래와 같았다.
@Test Annotaion과 @ParameterizedTest 둘 다 Test 객체로 동작한다.
따라서 @Test로 테스트를 한번 @ParameterizedTest로 테스트를 한번 수행하는것이다.
이때, @Test일때는 ParameterizedTest가 함께 수행되는것이 아니므로 @ValueSource의 Annotation이 함께 동작하지 않아 객체에 의도한 Parameter가 들어가지 않아 에러가 발생한 것이였다.
2. 해결 방법
@Test와 @ParameterizedTest + @ValueSource 둘 중 하나만 사용한다.
'Programming Language > Java' 카테고리의 다른 글
[Java] @Requiredargsconstructor 그리고 NPE 에러 (0) | 2023.11.10 |
---|---|
[JAVA] final 키워드에 대하여 (2) | 2023.11.07 |
[JAVA] QueryDSL 이란? (0) | 2023.09.27 |
[JAVA] Java 함수 orElse vs orElseGet (2) | 2023.05.26 |