inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 프레임워크 핵심 기술

Converter, Formatter의 bean 등록 시 test code 통과와 관련한 질문

해결된 질문

446

김대희

작성한 질문수 7

0

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

spring java

답변 4

1

백기선

해당 컨트롤러가 포매터를 사용하는 경우라고 가정하고 말씀드리자면, 컨트롤러나 컨버터는 문서에 나와있는대로 @WebMvcTest가 자동으로 스캔해서 빈으로 등록해 주지만, 포매터는 스캔하기 않기 떄문에 컨트롤러가 사용하려는 포매터가 null일꺼고 그래서 테스트가 동작하지 않았을꺼라고 예상되네요.

0

김대희

친절한 답변 감사합니다. 큰 도움이 되었습니다.

0

김대희

말씀하신대로 @WebMvcTest에 관한 문서를 확인했으며 Converter@WebMvcTest configuration에 포함되는 것을 알게 되었습니다. 따라서 Converter classbean으로 등록하지 않아도 정상 동작 하는 것에 대해서는 납득이 되었습니다.

 

Using this annotation will disable full auto-configuration and instead apply only configuration relevant to MVC tests (i.e. @Controller@ControllerAdvice@JsonComponentConverter/GenericConverterFilterWebMvcConfigurer 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