본문 바로가기

TDD6

@SpyBean @MockBean 의도적으로 사용하지 않기 보통 스프링 부트 관련 테스트 코드를 작성할때 @MockBean과 @SpyBean 를 사용했습니다. (참고: SpringBoot @MockBean, @SpyBean 소개) 복잡한 스프링 프로젝트에서도 원하는 코드만 아주 간단하게 Mock 처리를 할 수가 있어 정말 많이 사용했습니다. 그러다 최근에 Spring Boot Cloud 프로젝트의 테스트 코드를 보면서 제가 완전히 잘못하고 있음을 깨달았는데요. 대부분의 테스트 코드가 @MockBean, @SpyBean없이 작성되있었습니다. 마침 정진욱님의 발표도 봤던지라, 저도 @MockBean과 @SpyBean없이 테스트 코드 작성을 시도해보니!완전 큰 깨달음을 얻었습니다. 샘플 예제로 한번 소개드리겠습니다. 예제 예를 들어서, AWS SQS로 메세지를 보내는.. 2018. 7. 21.
TDD 잘알못을 위한 돌직구 세미나 참석 후기 OKKY 최단시간 마감 세미나! TDD 잘알못을 위한 돌직구 세미나에 다녀왔습니다. 세미나 링크 발표순서는 변경되어서 박재성님이 먼저 진행하셨습니다. 가장 빨리 마감된만큼 참석을 원했지만 아쉽게 안되신 분들도 많을거라 생각합니다. 모든 내용을 다 담진 못했지만, 최대한 미참석자분들에게 공유될 수 있도록 작성했습니다. 이걸로 조금이나마 아쉬움을 달래셨으면 합니다. 그럼 발표 내용 시작하겠습니다! 1. 박재성 Naver -> 아키에이지 -> NHN Next 에서 활동 NEXT 종료 후 뭘할지 고민하다가 교육으로 가게 됨 NextStep으로 1인 교육 사업 자바지기 -> SLIPP 커뮤니티 운영 이 발표에서는 TDD와 리팩토링을 왜 해야하는지 알고 있다는 가정하에 진행 개발 현장을 떠난지 6년이 되어가고 있음.. 2018. 6. 22.
Spock 소개 및 튜토리얼 안녕하세요? 이번 시간엔 spock 에 대해 소개하는 시간을 가지려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 소개 BDD는 한 TDD 실천자가 테스트의 의도를 더 명확하게 표현하기 위한 용어를 찾는 과정에서 탄생하였다. 사실 테스트라는 단어는 원하는 동작을 정의한다는 정신을 잘 반영하지 못하며 의미가 너무 함축적이다. 개발자 커뮤니티에서는 테스트와 테스트 메소드보다는 명세와 행위라는 용어를 거론하기 시작했다. 더 적합한 용어를 찾는 노력의 부산물로, BDD 커뮤니티는 JUnit 등 기존 테스트 프레임워크의 대안도 다수 만.. 2017. 9. 30.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (6) 코드리뷰 이 프로젝트를 OKKY에 올리고 나서 OKKY의 연예인이신 fender님의 리뷰을 받을 수 있었습니다. 개인적으로는 블로그에 글을 올리고나서 OKKY에 항상 바로 올리는 이유가 이런 선배님들의 피드백때문입니다. 바로 리뷰에 대한 수정을 진행하려고 했으나, 이전부터 작업하던 Spring AOP 정리를 마무리하는게 먼저라 시작이 늦었습니다. 다행히 이번주 평일전체를 연차로 쉴수 있게되어 AOP 내용도 정리하고, 이제라도 리뷰 수정을 진행할 수 있게 되었습니다. fender님의 리뷰에서 나온 수정사항들은 아래와 같습니다. Card의 패턴과 끗수를 enum으로 자연스러운 네이밍 isReceiveCard, receiveCardAllPlayers 등은 정상적인 문법은 아님 list 대신 stack을 사용 .. 2016. 12. 10.
SpringBoot 1.4.0 Test 적용하기 (2) 2. @WebMvcTestDataJpa 어노테이션이 Repository (Dao) 에 대한 테스트라면 WebMvcTest는 Controller을 위한 테스트 어노테이션이다.Scan 대상은 아래와 같다.@Controller@ControllerAdvice@JsonComponentFilterWebMvcConfigurer and HandlerMethodArgumentResolverMockMvc를 자동으로 지원하고 있어 별도의 HTTP 서버 없이 Controller 테스트를 진행할 수 있다.사용법 역시 간단하다.@RunWith(SpringRunner.class) @WebMvcTest(HomeController.class) public class WebMvcTest { @Autowired private MockMv.. 2016. 9. 8.
SpringBoot 1.4.0 Test 적용하기 (1) 공식문서를 참고하며 기록하는 SpringBoot Test 적용하기TDD를 기반으로 프로젝트를 시작하는 예제 테스트 코드를 통해 Entity와 Dao 구현 테스트 코드를 통해 Controller 구현 테스트 코드를 통해 Oauth 인증 구현 TDD로 실전 프로젝트를 해본적이 없어 개인적으로 만들 서비스의 예행연습으로 보고 진행함을 먼저 얘기한다.1. @DataJpaTestSpringBoot에서 JPA만 테스트할 수 있도록 제공하는 어노테이션개발의 첫 단계인 Entity 설계 단계에서 불필요한 코드 작성 없이, Entity간의 관계 설정 및 기능 테스트가 가능해졌다.예를 들자면 View를 만들거나, Controller를 작성하는 것 등등 Entity 설계 확인을 위한 코드 작성이 필요없어졌다.사용법은 간단하.. 2016. 9. 8.