본문 바로가기
반응형

테스트코드 & 정적분석30

테스트 코드에선 LocalDate.now()를 쓰지말자. 여러 사람의 코드를 볼때 가끔 테스트 코드에서 LocalDate.now() 를 사용하는걸 종종 보게 됩니다. 아무래도 편하게 작성할 수 있다보니 사용된것 같지만, 이는 좋은 패턴이 아닙니다. 그래서 예제로 테스트 코드에서 LocalDate.now()를 쓰면 안되는 이유를 소개하겠습니다. 예제 예를 들어 다음과 같은 코드가 있다고 가정합니다. 배송 예정일을 구합니다. 배송 예정일은 주문일 +3 영업일입니다. 즉, 월요일에 주문했다면 +3일인 목요일을, 목요일에 주문 했다면 금/월/화로 되어 화요일이 배송 예정일이 됩니다. 주말외에 공휴일 판단을 위해 공휴일 여부 판단 엔티티가 존재합니다. 위 조건을 만족하는 2개의 엔티티 클래스들입니다. 첫번째는 공휴일 여부를 가지는 엔티티입니다. @Getter @NoAr.. 2019. 5. 3.
SpringBoot에서 Spock Mock 사용법과 문제점 문제점Spring Boot의 @MockBean, @SpyBean은 Junit & Mockito를 지원합니다. 그러다보니 Spock을 쓴다 해도 Spring의 Bean을 Mocking하려면 Mockito 방식을 사용해야 합니다.example)@SpringBootTestclass CustomerServiceSpockMockTest extends Specification { @Autowired CustomerService customerService @MockBean(name = "jdbcTemplate") JdbcTemplate jdbcTemplate def "Customer_id로_이름을_조회"() { given: given(jdbcTemplate.que.. 2018. 9. 28.
@SpyBean @MockBean 의도적으로 사용하지 않기 보통 스프링 부트 관련 테스트 코드를 작성할때 @MockBean과 @SpyBean 를 사용했습니다. (참고: SpringBoot @MockBean, @SpyBean 소개) 복잡한 스프링 프로젝트에서도 원하는 코드만 아주 간단하게 Mock 처리를 할 수가 있어 정말 많이 사용했습니다. 그러다 최근에 Spring Boot Cloud 프로젝트의 테스트 코드를 보면서 제가 완전히 잘못하고 있음을 깨달았는데요. 대부분의 테스트 코드가 @MockBean, @SpyBean없이 작성되있었습니다. 마침 정진욱님의 발표도 봤던지라, 저도 @MockBean과 @SpyBean없이 테스트 코드 작성을 시도해보니!완전 큰 깨달음을 얻었습니다. 샘플 예제로 한번 소개드리겠습니다. 예제 예를 들어서, AWS SQS로 메세지를 보내는.. 2018. 7. 21.
Spy 사례1 - 테스트 대상 Mocking 하기 안녕하세요? Spy의 활용 사례 1번째를 소개드립니다.모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. )이전 포스팅 SpringBoot @MockBean, @SpyBean 소개 을 보신분들께서 Mock은 어디에 써야할지 알겠는데, Spy는 언제 써야할지 감이 잡히지 않는다는 이야기를 해주셨습니다. 그래서 어떻게 하면 좋을까 고민하다가 마침 회사 업무중에 적절한 사례를 찾게 되어 정리하게 되었습니다.상황기본적인 프로젝트 구성은 SpringBoot에서 JUnit, Mockito, Spock을 모두 사용하겠습니다. 사용할 프로젝트 코드들은 아래와 .. 2017. 10. 21.
Spock 소개 및 튜토리얼 안녕하세요? 이번 시간엔 spock 에 대해 소개하는 시간을 가지려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 소개 BDD는 한 TDD 실천자가 테스트의 의도를 더 명확하게 표현하기 위한 용어를 찾는 과정에서 탄생하였다. 사실 테스트라는 단어는 원하는 동작을 정의한다는 정신을 잘 반영하지 못하며 의미가 너무 함축적이다. 개발자 커뮤니티에서는 테스트와 테스트 메소드보다는 명세와 행위라는 용어를 거론하기 시작했다. 더 적합한 용어를 찾는 노력의 부산물로, BDD 커뮤니티는 JUnit 등 기존 테스트 프레임워크의 대안도 다수 만.. 2017. 9. 30.
SpringBoot @MockBean, @SpyBean 소개 안녕하세요? 이번 시간엔 SpringBoot의 @MockBean, @SpyBean 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 들어가며 SpringBoot 1.4에서 2개의 테스트 어노테이션 @MockBean, @SpyBean 이 추가되었습니다. (기존에 Mockito를 통해 Mock 테스트를 진행하신 분들에게 좀 더 편의성을 제공해주기 위함인것 같습니다.) 유닛테스트에 익숙하지 않을때는 테스트 코드 작성을 통합테스트 (Integration Test)로 작성하였습니다. (즉, 하나의 Service 메소드 단.. 2017. 9. 23.

728x90
반응형