Test10 JUnit5 테스트 병렬 실행 테스트 코드가 늘어날수록 테스트 수행 시간이 길어지고 있어서 테스트들을 병렬로 수행하기로 했다. 1. junit-platform.properties 파일 생성 우선 resources 폴더 아래에 junit-platform.properties 파일을 생성한다. 병렬 테스트를 위한 옵션으로 다음과 같이 지정해줄 수 있다. 하나씩 살펴보자 junit.jupiter.execution.parallel.enabled=true junit.jupiter.execution.parallel.mode.default=CONCURRENT junit.jupiter.execution.parallel.config.strategy=fixed junit.jupiter.execution.parallel.config.fixed.parall.. 2021. 12. 1. 코드 커버리지 적용(3) - 커버리지 제외 JaCoCo로 테스트 코드 수행 시 테스트가 필요없는 부분들도 커버리지에 잡히기 때문에 제외할 필요를 느꼈다. 제외할 클래스 범위로는 다음과 같이 잡았다. 1. 제외할 클래스 excludes 추가 @SpringBooTest가 붙은 클래스 각종 Config 클래스 Dto 클래스 Request/Response 클래스 Interceptor Exception QueryDSL 사용하기 위해 만들어지 Q도메인 클래스 위에있는 클래스 말고도 제외가 필요한 클래스는 각각 추가해주었다. QDomain의 경우 클래스 이름이 Q+대문자로 시작하기 때문에 그걸 특징으로 삼아 제외할 클래스에 추가해주었다. jacocoTestReport에는 분석 리포트 생성 시 특정 파일들을 제외하기 위해서 defQdomains = [] 부터 .. 2021. 11. 30. 코드 커버리지 적용(2) - JaCoCo 1. JacoCoCo란? JaCoCo는 자바 코드 커버리지를 체크하는데 사용하는 오픈소스 라이브러리이다. Line, Branch Coverage 제공 코드 커버리지 결과를 파일 형태로 저장 가능 html, xml, csv 설정한 커버리지 기준을 만족하는지 확인 가능 2. 스프링 부트 JaCoCo 적용 2.1 JaCoCo 플러그인 추가 Gradle 설정에 JaCoCo 플러그인을 추가하고 플러그인 설정을 한다. reportsDir로 테스트 결과 리포트를 저장할 경로를 바꿀 수 있다. build.gradle plugins { id 'jacoco' } jacoco { // JaCoCo 버전 toolVersion = "0.8.5" // 테스트결과 리포트를 저장할 경로 변경 // default는 "${project.. 2021. 11. 30. 코드 커버리지 적용(1) - 커버리지란? 1. 코드 커버리지란? 코드 커버리지는 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표중 하나이다. 테스트를 진행하였을 때 '코드 자체가 얼마나 실행되었느냐'를 수치로 확인할 수 있다. 코드 커버리지는 소스 코드를 기반으로 수행하는 화이트 박스 테스트를 통해 측정한다. 2. 코드 커버리지 측정 기준 코드의 구조는 구문(Statement), 조건(Condition), 결정(Decision)의 구조로 이루어져있고, 이러한 코드의 구조를 얼마나 커버했느냐에 따라 측정 기준이 나뉘게된다. 2.1 구문(Statement) 라인 커버리지라고도 부르며 코드 한줄이 한번 이상 실행된다면 충족된다. x가 -1일 때 테스트 데이터로 사용할 경우 if문의 조건을 통과하지 못하기 때문에 3번 코드는 실행이 되지 않는다. .. 2021. 11. 30. 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. 이전 1 2 다음