본문 바로가기

Spring49

SpringBoot에서 Spock Mock 사용법과 문제점 문제점 Spring Boot의 @MockBean, @SpyBean은 Junit & Mockito를 지원합니다. 그러다보니 Spock을 쓴다 해도 Spring의 Bean을 Mocking하려면 Mockito 방식을 사용해야 합니다. example) @SpringBootTest class CustomerServiceSpockMockTest extends Specification { @Autowired CustomerService customerService @MockBean(name = "jdbcTemplate") JdbcTemplate jdbcTemplate def "Customer_id로_이름을_조회"() { given: given(jdbcTemplate.query(anyString(), any(BeanP.. 2018. 9. 28.
@SpyBean @MockBean 의도적으로 사용하지 않기 보통 스프링 부트 관련 테스트 코드를 작성할때 @MockBean과 @SpyBean 를 사용했습니다. (참고: SpringBoot @MockBean, @SpyBean 소개) 복잡한 스프링 프로젝트에서도 원하는 코드만 아주 간단하게 Mock 처리를 할 수가 있어 정말 많이 사용했습니다. 그러다 최근에 Spring Boot Cloud 프로젝트의 테스트 코드를 보면서 제가 완전히 잘못하고 있음을 깨달았는데요. 대부분의 테스트 코드가 @MockBean, @SpyBean없이 작성되있었습니다. 마침 정진욱님의 발표도 봤던지라, 저도 @MockBean과 @SpyBean없이 테스트 코드 작성을 시도해보니!완전 큰 깨달음을 얻었습니다. 샘플 예제로 한번 소개드리겠습니다. 예제 예를 들어서, AWS SQS로 메세지를 보내는.. 2018. 7. 21.
Spring Rest Docs IntelliJ에서 미리보기 IntelliJ와 Spring Rest Docs를 사용하면 필수로 설치하는게 AsciiDoc Plugin입니다. (AsciiDoc Plugin) 마크다운 Preview처럼 AsciiDoc 파일을 미리 볼 수 있도록 지원하는 아주 좋은 플러그인입니다. 하지만 Spring Rest Docs에서는 활용하기가 쉽지 않습니다. 일반적으로 Spring Rest Docs는 아래처럼 {snippets}을 기준으로 Import 할 adoc 파일 위치를 지정합니다.하지만 이렇게 {snippets} Path를 제대로 인식하지 못합니다. 아시다시피 {snippets}는 Maven/Gradle이 html파일을 만들 때 교체될 변수이기 때문입니다. build 후에 굳이 html파일에서 보지 않고, adoc 파일에서 바로 결과물을.. 2018. 6. 1.
Spring Boot & HikariCP Datasource 연동하기 안녕하세요? 이번 시간엔 Spring Boot & Hikari Datasource 연동하기 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 기존에 SpringBoot에선 tomcat-jdbc를 기본 Datasource 로 제공했었는데요. 2.0부터 HikariCP가 기본으로 변경되었습니다. (참고) HikariCP는 이전 버전에서도 많은 분들이 설정을 변경해서 사용했을정도로 인기가 많았습니다. HikariCP의 Datasource 정보를 설정하는것에 막히신 분들 혹은 오해하고 계신분들이 계셔서 한번 정리하게 되.. 2018. 5. 21.
Spring Boot Data JPA 2.0 에서 id Auto_increment 문제 해결 안녕하세요? 이번 시간엔 Spring Boot JPA 2.0 에서 PK의 Auto_increment 문제를 알아보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 문제 회사의 신규 시스템 구축을 Spring Boot 2.0으로 진행하게 되었습니다. 진행 도중 Spring Data Jpa의 @GeneratedValue가 기존과 다르게 작동하는걸 발견하게 되었습니다. 예를 들어 아래와 같이 1.5.x 에서 사용하던대로 엔티티 클래스를 생성했습니다.2.0에서도 기본 전략이 AUTO임을 확인하고 테스트 코드를 작성했는데요. 이렇게 M.. 2018. 5. 12.
Gradle Multi Module에서 Spring Rest Docs 사용하기 지난 시간에 이어 이번시간에는 Markdown이 아닌 Asciidoc으로 Spring Rest Docs를 진행하는 과정을 기록합니다. Spring Rest Docs의 asciidoc 버전은 실제 Spring 프로젝트의 문서로 사용되고 있습니다.(링크)여기서는 Spring Rest Docs + Spock + Rest Assured를 조합으로 진행할 예정입니다. (저희팀 프로젝트 스펙이라서요..) Gradle Muliti Module의 경우 요즘 많은 프로젝트에서 사용하고 있으니 여기서도 마찬가지로 적용된걸 가정하고 진행합니다. 단일 프로젝트에서 기본 버전 (MockMVC + Junit4) 적용 방법은 레퍼런스 번역을 참고하시면 됩니다. 모든 코드는 Github에 있으니 참고하시면 될것 같습니다. 1. Gr.. 2018. 5. 10.