본문 바로가기

전체 카테고리361

Mockito && 스프링부트 테스트 관련 어노테이션 정리 1. @SpringBootTest 통합 테스트용으로 사용 @SpringBootApplication을 찾아가 하위의 모든 Bean 스캔 및 로드 Test 용 Application Context를 만들어 Bean을 추가하고 MockBean을 찾아 교체 2. @ExtendWith JUnit4에서 @RunWith로 사용되던 어노테이션 ExtendWith로 변경됨 @ExtendWith는 메인으로 실행될 Class를 지정할 수 있음 @SpringBootTest는 기본적으로 @ExtendWith가 추가되어 있음 3. @WebMvcTest(Class명.class) ()에 작성된 클래스만 실제로 로드하여 테스트 진행 매개변수를 지정해주지 않으면 @Controller, @RestController, @RestControl.. 2021. 11. 17.
무엇을 어떻게 테스트할 것인가 (feat : 권용근님) 테스트 코드에 대한 중요성을 알고 이를 작성해나가고 있지만 원칙을 정하기가 어려운와중에 스프링 캠프에서 권용근님의 무엇을 테스트할 것인가? 어떻게 테스트할 것인가에 대한 발표 영상을 보게되었다. 아래 포스팅은 발표 영상을 요약한 내용이다. 테스트에 대한 기본 원칙을 세우고 싶으시다면 맨 아래 REFERENCE의 동영상 주소를 참고하면 된다. 1. 무엇을 테스트할 것 인가? 예를 들면 로또 시스템을 개발한다고 생각해보자. 그렇다면 요구 사항을 정리한다면 다음과 같다. 6개의 숫자 반환 중복되지 않은 숫자 랜덤하게 반환 중복되지 않은 숫자 테스트는 안해도 되는가?? -> 구현은 언젠가 변할 수 있다라는 것을 명심해야한다. private 메소드인 actD는 어떻게 테스트할 것 인가?? 테스트 케이스를 추가해서.. 2021. 11. 17.
단위 테스트(Unit Test) 1. 단위 테스트란? 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트. 여기서 모듈은 애플리케이션에서 작동하는 하나의 기능 또는 메소드로 이해할 수 있다. 또한 단위 테스트는 테스트 유형에 따라 논리 단위 테스트, 통합 단위 테스트 등으로 나눌 수 있습니다. 논리 단위 테스트 : 한 메서드에 집중한 테스트로 mock이나 stub을 이용해 테스트 메서드의 경계를 제어할 수 있다. 통합 단위 테스트 : 실제 운영 환경(혹은 그 일부)에서 컴포넌트 간 연동에 치중한 테스트, 예를 들어 데이터베이스를 사용하는 코드라면 데이터베이스를 효과적으로 호출하는가를 테스트할 수 있다. 단위 테스트의 경우 보통 해당 코드를 작성한 개발자가 진행한다. 2. 좋은 단위 테스트 속성(FIRST) Fast : .. 2021. 11. 17.
테스트 종류 오늘은 간단히 테스트 종류에 대해서 알아보려고한다. 테스트 종류는 보통 아래와 같은 범위로 나타낼 수 있다. 인수 테스트 : 인수 테스트는 개발된 시스템이 고객이 명세한 요구사항을 충족했는지를 검증하기 위해 사용한다. 사용자 혹은 고객이 애플리케이션을 인수(Accept)할 것인지를 결정하기 위해 수행한다. 부하 테스트 : 어느 지점에서 시스템의 반응 시간이 지연되거나 실패하는지를 알아보기 위해서 테스트하는것. 일종의 퍼포먼스 테스트 기능 테스트 : 공개된 API의 가장 바깥쪽에서 해당하는 코드 검사 (Controller 호출, Security, http) 통합 테스트 : 여러 작업 단위가 연게된 워크 플로우를 테스트 하기 위한 수단 (객체 간, 서비스 간, 시스템 간). 단위 테스트 : 하나의 모듈을 기.. 2021. 11. 17.
AssertJ 기본 사용법 1. AssertJ란? AssertJ란 asssertion(직역 : 주장)을 제공하는 자바 라이브러리로 에러 메세지와 테스트 코드의 가독성을 높여주는 라이브러리이다. junit5에서 제공하는 Assertions의 assert는 인자 순서 (expected, actual)의 순서가 헷갈릴 수 있는데 Assertions보다 가독성이 좋아진다. assertEquals(expected, actual); assertThat(actual).isEqualTo(expected); 메소드 체이닝을 지원하기 때문에 좀 더 깔끔하고 읽기 쉬운 테스트 코드를 작성할 수 있다. 개발자가 테스트를 하면서 필요한 거의 모든 메소드를 제공한다. 2. 의존성 추가 //maven org.assertj assertj-core 3.21.0.. 2021. 11. 15.
Junit5 기본 사용법 정리 1. Junit이란?? 자바 개발자가 가장 많이 사용하는 테스팅 기반 프레임워크다. JUnit5은 자바8 이상부터 사용이 가능하다. Junit4가 단일 jar이었던거에 비해서, JUnit5는 크게 3가지 모듈로 구성되어있다. JUnit5는 테스트 작성자를 위한 API 모듈과 테스트 실행을 위한 API가 분리되어있다. 예를 들어, JUnit Jupiter는 테스트 코드 작성에 필요한 junit-jupiter-api 모듈과 테스트 실행을 위한 junit-jupiter-engine 모듈로 분리되어 있다. 2. Junit5 구조 JUnit Platform: 테스트를 실행해주는 런처와 TestEngine API를 제공함. Jupiter: TestEngine API 구현체로 JUnit5에서 제공함. Vintage:.. 2021. 11. 15.