-
[IntelliJ] 테스트 커버리지, 내 테스트 코드는 얼마나 잘 만들었을까IT/Tool 2023. 2. 11. 16:39
IntelliJ는 유료인만큼 강력하고 편리한 기능을 많이 제공한다.
그 중 내가 만든 테스트코드가 얼마나 잘 테스트되고 있는지 수치적으로 표기해주는 기능이 있다.
test code Coverage 기능에 대해 사용방법을 알아보자.
1. 테스트코드 작성
테스트코드는 본 블로그의 아래 코드를 테스트하는 코드이다.
package com.practice.practice.traing; import static org.junit.jupiter.api.Assertions.assertIterableEquals; import com.practice.practice.traing.dto.ComparatorTestDto; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @Slf4j class StringComparatorTest { public static List<ComparatorTestDto> resultDtos = new ArrayList<>(); public static List<String> testArray = new ArrayList<>(); public static List<String> resultArray = new ArrayList<>(); @BeforeAll static void injectionDto() { // given testArray = Arrays.asList("1234", "832", "123.123", "832.523", "한글", "가나다라", "hello", "check", "ch_ck", "[중괄호]", "[eng]", "{대괄호}", "1623", "넘버아님", "/특수/", "832", "가나다라1", "Aad", "Check", "634.123", "634.31123", "01234", "08561", "<eng>", "^test^", "&대괄호&", "#shap]", "#java]", "#대괄호}"); resultArray = Arrays.asList("#java]", "#shap]", "#대괄호}", "&대괄호&", "/특수/", "01234", "08561", "123.123", "1234", "1623", "634.123", "634.31123", "832", "832", "832.523", "<eng>", "Aad", "Check", "[eng]", "[중괄호]", "^test^", "ch_ck", "check", "hello", "{대괄호}", "가나다라", "가나다라1", "넘버아님", "한글"); resultDtos = IntStream.range(0, resultArray.size()) .mapToObj(index -> ComparatorTestDto.builder() .num(index) .name(resultArray.get(index)) .info("testArray index : " + index) .build()) .collect(Collectors.toList()); } @Test void comparatorTest() { // given List<ComparatorTestDto> testDtos = IntStream.range(0, testArray.size()) .mapToObj(index -> ComparatorTestDto.builder() .num(index) .name(testArray.get(index)) .info("testArray index : " + index) .build()) .collect(Collectors.toList()); // when List<String> testNameDtos = testDtos.stream() .sorted((o1, o2) -> new StringComparator().compare(o1.getName(), o2.getName())) .map(ComparatorTestDto::getName) .collect(Collectors.toList()); List<String> resultNameDtos = resultDtos.stream() .sorted((o1, o2) -> new StringComparator().compare(o1.getName(), o2.getName())) .map(ComparatorTestDto::getName) .collect(Collectors.toList()); //then assertIterableEquals(testNameDtos, resultNameDtos); } }
2. 테스트 커버리지 실행
두가지 실행방법을 안내한다.
1. 해당 테스트 클래스명을 우클릭 -> More Run/Debug -> run StringComparatorTest with Covarege
2. 상단 메뉴바 -> Run -> run StringComparatorTest with Covarege
3. 결과 확인
해당 테스트는 Dto를 100% 테스트하지 못하고 있습니다.
그렇다면 테스트가 제대로 이루어지지 않은 코드에서 오류가 발생할 수 있겠죠
테스트가 부족한 클래스를 더블클릭하면 어떤 코드가 테스트되지 않는지 확인 가능하다.
상단에 보이는 버튼 4개중 가장 우측에 있는 버튼은 리포트로 만들어주기 때문에 회사에서 보고용으로 사용 가능하다.
'IT > Tool' 카테고리의 다른 글
[IntelliJ] Editor에 코드 호출, 구현 등 한눈에 보기 ( Inlay hints ) (0) 2022.12.18 [MAC] [IntelliJ] Google style guide format 적용하기 (0) 2022.12.17 [MAC] M1 맥북 homebrew 설치 후 command not found:brew 해결 (0) 2022.08.15 [MAC] iTerm2 꾸미기 (powerlevel10k, sysntaxt highlighting, status bar 등) iTerm 커스텀 (6) 2022.08.15 [MAC] iTerm2 꾸미기 (oh-my-zsh, font, theme 등) iTerm 커스텀 (0) 2022.08.15