본문 바로가기
반응형

Mockito4

테스트 코드에서 내부 구현 검증 피하기 테스트 코드를 작성하고 운영하다보면 기존 코드가 조금만 변경되어도 테스트를 다 고쳐야하는 경우가 종종 있다. (모든 경우가 그렇진 않겠지만) 기능의 최종 결과를 검증하는게 아니라 내부 구현을 검증하는 경우에 자주 이런일이 있었다. 내부 구현을 검증하는 테스트들은 구현을 조금만 변경해도 테스트가 깨질 가능성이 커진다. 내부 구현은 언제든지 바뀔 수 있기 때문에 테스트 코드는 내부 구현 보다 최종 결과를 검증해야한다. 그럼, 내부 구현을 검증하는 경우란 어떤 것인지 알아보자. 1. 상세 구현부를 다 검증하는 경우 이를 테면 다음과 같이 합계 금액을 구하는 클래스가 있다고 하자. export class OrderAmountSum { minusSum: number = 0; plusSum: number = 0; .. 2021. 11. 11.
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.
Spy 사례1 - 테스트 대상 Mocking 하기 안녕하세요? Spy의 활용 사례 1번째를 소개드립니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 이전 포스팅 SpringBoot @MockBean, @SpyBean 소개 을 보신분들께서 Mock은 어디에 써야할지 알겠는데, Spy는 언제 써야할지 감이 잡히지 않는다는 이야기를 해주셨습니다. 그래서 어떻게 하면 좋을까 고민하다가 마침 회사 업무중에 적절한 사례를 찾게 되어 정리하게 되었습니다. 상황 기본적인 프로젝트 구성은 SpringBoot에서 JUnit, Mockito, Spock을 모두 사용하겠습니다. 사용할 프로젝트 코드들은 .. 2017. 10. 21.

728x90
반응형