Converter, Formatter의 bean 등록 시 test code 통과와 관련한 질문
Converter와 Formatter를 통한 data binding 예제를 따라하던 중 궁금한 점이 있습니다.
Converter를 bean으로 등록한 경우 test code의 @WebMvcTest annotation에 명시적으로 Converter bean class를 등록하지 않아도 test code가 통과되었는데, Formatter를 bean으로 등록한 경우에는 EventController와 Formmater class를 @WebMvcTest에 명시해야만 통과되는 것을 확인했습니다. 어떤 이유에서 이렇게 되는 것인지 궁금합니다.
Here is my code -> https://github.com/camel-master/SpringBootExample.git
답변 4
1
해당 컨트롤러가 포매터를 사용하는 경우라고 가정하고 말씀드리자면, 컨트롤러나 컨버터는 문서에 나와있는대로 @WebMvcTest가 자동으로 스캔해서 빈으로 등록해 주지만, 포매터는 스캔하기 않기 떄문에 컨트롤러가 사용하려는 포매터가 null일꺼고 그래서 테스트가 동작하지 않았을꺼라고 예상되네요.
0
말씀하신대로 @WebMvcTest에 관한 문서를 확인했으며 Converter는 @WebMvcTest configuration에 포함되는 것을 알게 되었습니다. 따라서 Converter class는 bean으로 등록하지 않아도 정상 동작 하는 것에 대해서는 납득이 되었습니다.
Using this annotation will disable full auto-configuration and instead apply only configuration relevant to MVC tests (i.e. @Controller, @ControllerAdvice, @JsonComponent, Converter/GenericConverter, Filter, WebMvcConfigurer and HandlerMethodArgumentResolver beans but not @Component, @Service or @Repository beans).
다만 아직까지 풀리지 않은 점은 문서상에서 @WebMvcTest는 @Controller bean들을 configuration에 포함한다고 되어있는데 Formatter를 bean으로 등록하는 경우 @WebMvcTest에 Formatter class뿐 아니라 Controller class(EventController.class)를 포함하지 않으면 test code를 통과할 수 없다는 것입니다. 왜 그러는 것일까요?
0
@WebMvcTest 애노테이션의 JavaDoc을 찾아서 읽어보시면 알 수 있습니다. 찾아서 읽어보신 다음에도 이해가 잘 되지 않으시면 그때 다시 아래에 댓글 달아주세요.
BeanFactory와 ApplicationContext 중 사용하고 싶은 컨테이너를 설정 할 수 있나요?
0
381
1
프로젝트 생성에 관련한 질문
0
376
1
안녕하세요 강의 내용을 듣다가 궁금점이 생겨 글을 남기게 되었습니다.
0
371
1
HttpServeltRequest 객체의 빈 스코프에 대해 질문 드립니다.
0
304
0
PropertyEditor non thread-safe 한 이유
0
491
1
빈의 초기화 시점이 궁금합니다.
0
393
1
이 강의 예제소스 없나요?
0
345
1
릴로딩 기능에 대해
0
404
1
Bean 을 특정 Application...Event 발생 후, 등록하는 방법이 궁금합니다
0
612
3
IoC/DI와 POJO의 관계
1
749
2
기선님 RetentionPolicy에 대해서 질문이 있습니다.
0
291
1
안녕하세요 기선님!
3
486
3
비동기적으로 실행할때
0
314
2
"Prototype/프록시"로 설정했는데 동일한 객체로 나옵니다
0
530
4
@Autowired 로 가져오는 Bean은 ?
2
280
1
Type-Safety 의미
0
538
1
Null Point
0
318
1
WebDataBinder를 특별히 쓰는 이유가 있나요?
0
384
1
안녕하세요?
0
336
2
애노테이션이 없습니다(?)
0
279
3
코드 중 변수 앞에 적는 것이 무엇인지 알고 싶습니다.
0
295
2
강의 하시면서 사용하는 resolving 이란 단어는 어떤 의미인가요?
1
1499
1
IOC컨테이너관련 질문입니다
0
245
3
인터페이스가 있는 경우 인터페이스 타입으로 주입하는 추가 질문입니다.
0
259
1





