junit5 7

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 모의 객체로 테스트 하기 (Mock) (2/2)

개발환경IDE :  intelliJ FrameWork : springboot 3.xLaunguage : java 17TestTool : Junit5    예제 소스 링크 모의 객체 프레임워크 사용해 보기이전 게시글에서 모의 객체를 밑바닥부터 구현했다. 프레임워크를 사용하면 프로젝트에서 이렇게 모의 객체를 하나하나 새로 생성할 필요 없이 더 쉽게 만들 수 있다. 일반적으로 많이 사용하는 테스트를 위한 프레임워크는 EasyMock, JMock, Mockito 에 대해 간략히 정리하려고 한다.   EasyMockEasyMock은 모의 객체를 사용하기 위한 유용한 클래스를 제공하는 오픈 소스 프레임워크다. 이전 게시글에서 작성한 예제를 EasyMock 프레임워크를 사용해서 리팩터링 해보자. 책에서는 maven ..

Dev/TDD 2024.09.24

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 소프트웨어 테스트 원칙과 테스트 품질 ( 2/2 )

테스트 커버리지 측정하기 이상적으로는 테스트가 애플리케이션 코드의 100%를 커버하는 것이 좋다. 테스트 커버리지는 그 자체로 코드의 품질을 어느 정도 보증한다. 하지만 절대적이지는 않다. 높은 테스트커버리지가 테스트의 질을 완전히 보장하지는 않기 때문이다. 훌륭한 개발자는 테스트를 실행하여 얻어 낸 기계적인 백분율 수치 이상을 볼 수 있어야 한다.  테스트 커버리지란?테스트 커버리지를 계산하는 데 다양한 지표가 활용될 수 있다. 가장 기본적인 지표는 테스트 묶음을 실행하는 동안 호출되는 애플리케이션의 메서드나 코드 줄의 수를 가지고 나타낸 백분율이다. 혹은 테스트가 호출하는 메서드를 추적해서 집계할 수 있다.  메서드가 어떻게 구현되어 있는지 자세히 알고 있다면 단위 테스트를 작성할 수 있다. 테스트 ..

Dev/TDD 2024.07.01

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 소프트웨어 테스트 원칙과 테스트 품질 ( 1/2 )

단위테스트를 하는 이유단위 테스트의 핵심 목표는 애플리케이션이 예상대로 작동하는지 확인하고 사전에 버그를 찾아내는 것이다.단위 테스트가 가지는 장점은 다음과 같다. 장점 기능 테스트만 수행했을 때보다 테스트 커버리지를 높일 수 있다 → 기능 테스트로는 수행하기 어렵거나 불가능한 오류 조건에 대해서도 쉽게 테스트할 수 있다. 팀 생산성이 향상된다 → 다른 컴포넌트가 준비될 때까지 기다리지 않고도 질적으로 우수한 코드를 전달할 수 있다. 기능 테스트는 어느 정도 준비가 되어야 실행 가능한 것과 대비된다 소스를 리팩터링 하거나 변경할 때 개발자에게 확신을 준다 → 어디에 문제가 생기는지 쉽게 알 수 있고 애플리케이션을 일일이 디버깅하지 않아도 된다애플리케이션 기능 구현에 도움을 준다 → 단위 테스트가 너무 길..

Dev/TDD 2024.07.01

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - Junit4와 Junit5 비교

Junit4에서 Junit5로 전환하기Junit5는 새로운 아키텍처를 적용한 새로운 패러다임으로  Junit Vintage 테스트 엔진을 활용하여 Junit4에서 Junit5로 전환할 수 있다.Junit Jupiter와 관련한 모든 클래스와 애노테이션은 org.junit.jupiter패키지에서 확인할 수 있고, org.junit 패키지에 Junit4와 관련한 모든 클래스와 애노테이션이 있으므로 클래스 패스에 Junit 5 Jupiter와 Junit4가 모두 존재하더라도 충돌이 발생하지 않는다. ( 예를 들면, Junit4의 @Test 애노테이션은 org.junit.Test에 속해 있고 Junit5의 @Test 애노테이션은 org.junit.jupiter.api.Test에 속해 있어 충돌이 발생하지 않고 ..

Dev/TDD 2024.06.26

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 핵심 애노테이션 ( 2/2 )

개발환경IDE :  intelliJ FrameWork : springboot 3.xLaunguage : java 17TestTool : Junit5   예제 소스 링크   HamcrestMatcher 사용하기Hamcrest 라이브러리는 테스트 프레임워크는 아니지만, 간명한 매치 규칙을 선언하는데 도움을 준다. 매치 규칙은 다양한 상황에 쓰일 수 있지만 특히 단위 테스트에서 유용하게 쓰일 수 있다. 매처(Matcher)는 제약(constraint) 혹은 술어(predicate)로 표현되는데 이것을 사용하여 테스트 메서드 안에 있는 복잡한 단언문을 간명하게 처리할 수 있다. 아래는 중복 조건을 검사하는 단언문을 assertThat을 통해 처리하는 예제이다. @Test @DisplayName("Ham..

Dev/TDD 2024.06.14

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 핵심 애노테이션 ( 1/2 )

개발환경IDE :  intelliJ FrameWork : springboot 3.xLaunguage : java 17TestTool : Junit5   예제 소스 링크   들어가기 전에  개발 방식을 TDD로 전환하면서 테스트 코드 작성 시 여러 난관에 부딪혔다. 공식 가이드를 보며 이것저것 시도해보기도하고, 구글링과 ChatGPT를 통해 예제 코드도 많이 봤고, Git에서 떠돌아다니는 오픈소스의 테스트코드들을 뜯어보며 어떻게 작성하는 게 좋을지에 대해 많은 고민을 했다.  처음에는 Mock이고 Stub이고 하는것들의 개념 없이 그냥 서비스 레이어의 메서드 단위로 테스트를 시작했다.  뭐가 뭔지도 잘 모르는 상태에서 단순히 그냥 '코드를 먼저 작성하는' 정도에 그쳤다.  특히 Controller 관련 코..

Dev/TDD 2024.06.14

MockMvc 을 사용해서 Controller 테스트 코드 작성하기

개발환경 IDE : intelliJ FrameWork : springboot 3.2.2 Launguage java 17 DB : h2 Build Tool : Gradle 1. Controller 테스트 하기 Controller 작성 후 테스트할 때 MockMvc 를 이용하면 정상적으로 내가 원하는 요청을 넣었을 때 응답이 리턴되는지 확인 할 수 있다. 사용 방법은 다음과 같다. @AutoConfigureMockMvc @SpringBootTest @Autowired MockMvc mvc; @Autowired TestService service; @Test void testExample() throws Exception { ... given(this.userVehicleService.getVehicleDet..

Dev/TDD 2024.01.29