IT65 @Mock vs Mock() vs @MockBean junit5로 테스트케이스를 만들다보면 늘 헷갈리던 어노테이션들이 있다. 일단, 전부 mock객체를 만드는 것은 확실한데.. 도대체 어느 시점에 @Mock을 써야하고 Mock()은 또 뭐고 각자의 기능은 동일한것인지에 관해 이번기회에 정리해보려고 한다. @Mock vs Mock() vs @MockBean Mockito.Mock()클래스 or 인터페이스의 mock 객체를 생성mock 객체를 사용해, 해당 객체가 가진 메서드의 반환값을 조작하거나 해당 메서드가 호출되었는지 확인가능@Testpublic void MockTest () { UserRepository localMockRepository = Mockito.mock(UserRepository.class);// UserRepository lo.. 2025. 4. 19. Junit in Action 3판 - 8장) 모의 객체로 테스트하기 본장에서는 테스트케이스 작성시, 다른 클래스의 의존하는 코드를 테스트하는 방법중인 2번째 방법인 '모의 객체'에 관하여 설명한다. DB접속, HTTP 연계 등 실제 준비가 되어있지 않은 의존성을 테스트하기 위해 실제 객체를 구현하여 테스트를 대체하는 스텁과는 달리 모의 객체는 실제 객체를 구현하지않고 결과값만 사전에 정의한대로 반환하는 껍데기를 제공한다. 모의 객체란 무엇인가모의 객체란 실제 객체가 아닌 껍데기 객체를 의미한다. 즉, 외부의 다른 서비스나 모듈들을 실제 사용하는 모듈을 사용하지 않고 실제의 모듈을 흉내 내는 가짜 모듈을 작성하여 테스트의 효용성을 높이는데 사용하는 객체이다.예를 들어, DB접속 등의 3rd party에 의존하는 코드를 테스트할시 실제 DB를 연결하지않고 해당 코드를 모의객.. 2025. 4. 19. Junit in Action 3판 - 7장) 스텁을 활용한 거친 테스트 본 장에서는 테스트케이스를 작성하기 위해 필요한 '스텁'에 관하여 설명한다.애플리케이션을 개발하다 보면 몇몇 코드가 다른 클래스에 의존한다는 사실을 알게 된다.DB접속, HTTP 연결 등 미리 준비되지 않은 환경에 관하여 테스트를 진행할 때 가짜객체를 사용해야한다. 이때, 가짜 객체를 사용하는 방법은 2가지가 존재한다.스텁사전에 정의된 동작만을 수행스텁 코드는 테스트 외부에 만들어져 있으며 사용하는 위치나 횟수와 관계없이 동일한 동작을 수행일반적으로 하드코딩한 값을 반환스텁으로 테스트할 때는 “스텁 초기화 > 테스트 실행 > 단언문 검증” 순서로 진행모의 객체사전에 정의된 동작을 수행하지 않음모의 객체가 수행할 행동을 기대다른 테스트를 수행 시, 모의 객체를 초기화 한 후 새로운 행동을 기대하는 것도 가.. 2025. 3. 24. Junit in Action 3판 - 6장) 테스트 품질 6장에서는 테스트 커버리지 도구를 이용해서 테스트가 커버한 코드와 커버하지 못한 코드가 얼마나 되는지 확인하고, 어떻게하면 테스트하기 쉬운 코드를 작성할 수 있는지 알아본다.해당 장도 이론에 가까운 내용이므로 간단히 정리하고 넘어가도록 한다. 테스트 커버리지 측정테스트 커버리지란 코드가 얼마나 테스트로 커버되었는지를 측정하는 지표이다.예를들어, 6개의 분기문이 있을때 6개의 각 경우를 모두 테스트하였다면 테스트 커버리지는 100%다. 자바에는 커버리지를 측정하는 도구가 존재하는데, 대표적으로 JaCoCo(Java Code Coverage)가 존재한다. pom.xml에 jacoco 의존성을 추가하고 명령 프롬프트에서 mvn test를 실행할시, 테스트에 대한 코드 커버리지 리포트를 작성해준다. (targe.. 2025. 3. 15. Junit in Action 3판 - 5장) 소프트웨어 테스트 원칙 5장은 다양한 유형의 소프트웨어 테스트와 그러한 테스트가 애플리케이션 생애 쥑에서 수행하는 역할을 살펴본다.해당 장은 이론적인 내용이므로 간단히 핵심만 설명하고 넘어가도록한다. 단위 테스트를 해야하는 이유테스트 커버리지를 높일 수 있다.팀 생산성이 향상된다.회귀(리그레션)를 사전에 발견하여 디버깅 작업을 줄일 수 있다.자신 있게 리팩토링할 수 있다.기능구현에 도움이 된다.코드의 예상 동작을 문서화할 수 있다.코드 커버리지 및 다양한 지표를 측정할 수 있게 해준다.결국 단위테스트만을 작성하는것만으로 다양한 이점을 갖는다.특히, 단위테스트를 작성함으로써 리팩토링시 제대로 수정됐음에 확신을 가질 수 있으며, 남이 작성한 코드를 보았을때 단위테스트 자체가 해당 메소드의 사용법을 나타냄으로 더 쉽게 이해하는 장점.. 2025. 3. 15. Junit in Action 3판 - 4장) Junit4에서 Junit5로 전환하기 지금까지는 Junit과 그 최신버전인 Junit5에 대해 설명했다.이번 장에서는 junit4를 junit5로 전환하는 방법에 대해 알아본다. Junit 4 -> 5 전환junit4를 junit5로 변경하기위해서는 아래와 같은 과정이 필요하다.각 과정에 대해 자세히 알아본다. 1. 의존성을 교체한다.2. 어노테이션을 변경한다.3. 테스트 클래스와 메서드를 교체한다.4. rule, runner를 extension으로 교체한다. 1. 의존성 교체junit5를 사용하기 위해서는 의존성을 교체해야한다. org.junit.jupiter junit-jupiter-api 5.6.0 test org.junit.jupiter junit-jupiter-engine 5.6.. 2025. 3. 15. 이전 1 2 3 4 ··· 11 다음