• 티스토리 홈
  • 프로필사진
    아몬드맛빼빼로
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
아몬드맛빼빼로
  • 프로필사진
    아몬드맛빼빼로
    • 분류 전체보기 (46)
      • Java (8)
      • C (3)
      • Springboot (7)
      • Kotlin (2)
      • 회고 (5)
      • Backend (13)
      • 기타 (5)
      • DevOps (3)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • [DevOps] Jacoco
    2025년 05월 29일
    • 아몬드맛빼빼로
    • 작성자
    • 2025.05.29.:11
    반응형

    Jacoco!

    Jacoco는 Java 플랫폼에서 코드 커버리지(Code Coverage)를 측정하기 위한 도구로 코드 커버리지 측정 결과를 HTML,XML,CSV등의 형식으로 제공해줍니다.결과에 따른 최소 기준치를 정하여 충족하지 못하면 경고를 하거나 코드의 품질관리를 돕습니다.

    더보기

    Code Coverage?

    소프트웨어에서 테스트코드가 얼마나 코드들을 테스트하고 있는지 알려주는 지표

    사용법 및 사용모습

    1. build.gradle.kts에 스크립트 추가

    tasks.withType<Test> {
        useJUnitPlatform()
        finalizedBy(tasks.jacocoTestReport) // 테스트 실행 후 자동으로 리포트 생성
    }
    
    jacoco {
        toolVersion = "0.8.8"
    }
    
    tasks.jacocoTestReport {
        dependsOn(tasks.test)
        
        reports {
            xml.required.set(true)
            html.required.set(true)
            csv.required.set(false)
        }
        
        // 리포트에서 제외할 클래스 패턴 설정
        classDirectories.setFrom(
            files(classDirectories.files.map {
                fileTree(it) {
                    exclude(
                        "**/*Application*",
                        "**/*Config*",
                        "**/*Dto*",
                        "**/*Entity*",
                        "**/generated/**"
                    )
                }
            })
        )
    }
    
    tasks.jacocoTestCoverageVerification {
        dependsOn(tasks.jacocoTestReport)
        
        violationRules {
            rule {
                limit {
                    minimum = "0.80".toBigDecimal() // 최소 80% 커버리지
                }
            }
            
            rule {
                enabled = true
                element = "CLASS"
                
                limit {
                    counter = "BRANCH"
                    value = "COVEREDRATIO"
                    minimum = "0.70".toBigDecimal()
                }
                
                limit {
                    counter = "LINE"
                    value = "COVEREDRATIO"
                    minimum = "0.80".toBigDecimal()
                }
                
                excludes = listOf(
                    "*.test.*",
                    "*.Kotlin*",
                    "*Application*",
                    "*Config*"
                )
            }
        }
    }
    
    tasks.check {
        dependsOn(tasks.jacocoTestCoverageVerification)
    }

    2. Jacoco 실행

    # 테스트 실행 및 커버리지 검증 및 리포트 생성
    ./gradlew test jacocoTestReport jacocoTestCoverageVerification
    
    # 전체 빌드 (커버리지 검증 포함)
    ./gradlew build

    3. 리포트 확인

    • build/reports/jacoco/test/html/index.html
    • build/reports/jacoco/test/jacocoTestReport.xml

    브라우저 등의 도구를 이용하여 커버리지 리포트를 확인할 수 있다

     

    저작자표시 비영리 변경금지 (새창열림)

    'DevOps' 카테고리의 다른 글

    [DevOps] NAT Gateway VS NAT Instance  (0) 2025.09.03
    [DevOps] Qodana  (0) 2025.05.29
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바