ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [appling] 코드품질 관련 설정 (jacoco)
    appling 프로젝트 2024. 9. 1. 22:18
    728x90
    반응형

    🔴 jacoco

    테스트코드의 커버리지를 강제할 수 있는 jacoco 설정을 진행하려고 한다.

    🟠 설정

    plugins {
        ...
        id("jacoco")
    }
    
    dependencies {
        ...
    //    developmentOnly("org.springframework.boot:spring-boot-docker-compose")
        runtimeOnly("com.h2database:h2")
    }
    
    tasks.withType<Test> {
        useJUnitPlatform()
        finalizedBy(tasks.jacocoTestReport)
    }
    
    jacoco {
        toolVersion = "0.8.12" // JaCoCo의 버전을 명시합니다.
    }
    
    tasks.jacocoTestReport {
        dependsOn(tasks.test) // 테스트가 완료된 후 리포트를 생성하도록 설정
    
        reports {
            xml.required.set(true) // XML 리포트 생성을 활성화
            csv.required.set(false) // CSV 리포트 생성을 비활성화
            html.outputLocation.set(layout.buildDirectory.dir("jacocoHtml")) // HTML 리포트의 출력 위치 설정
        }
    }
    
    tasks.jacocoTestCoverageVerification {
        violationRules {
            rule {
                enabled = true
                element = "CLASS"
    
                // 라인 커버리지를 최소한 80%
                limit {
                    counter = "LINE"
                    value = "COVEREDRATIO"
                    minimum = "0.80".toBigDecimal()
                }
    
                // 브랜치 커버리지를 최소한 90%
                limit {
                    counter = "BRANCH"
                    value = "COVEREDRATIO"
                    minimum = "0.90".toBigDecimal()
                }
    
                // 빈 줄을 제외한 코드의 라인수를 최대 200라인으로 제한합니다.
                limit {
                    counter = "LINE"
                    value = "TOTALCOUNT"
                    maximum = "200".toBigDecimal()
                }
    
                excludes = listOf(
                    "*.ApplingApplication*"
                    , "*.global.*"
                    , "*.Hello*"
                )
        }
    }
    
    tasks.check {
        dependsOn(tasks.jacocoTestCoverageVerification) // `check` 태스크가 실행될 때 커버리지 검증을 포함하도록 설정
    }

    jacoco 설정을 위해 다음과 같이 정의했다. 기존에 docker compose support는 삭제를 했는데 그 이유는 build와 test를 진행할때 자동으로 docker가 같이 실행되어야하는 설정이 생각보다 복잡해져서 기존에 h2 db를 사용하는 방법으로 우선 변경했다. 나중에 해당 방법이 가능한것인지 확인하여 진행해야될 것 같다.

    여기서 주의해야할 점은 excludes 정의시 패키지+파일명으로 정의해야된다는 점이다.

    spring:
      application:
        name: appling
      profiles:
        active: ${server.profile:local}
    
    ---
    spring:
      config:
        activate:
          on-profile: local
      h2:
        console:
          enabled: true
          settings:
            web-allow-others: true
          path: /h2-console
      jpa:
        hibernate:
          ddl-auto: create-drop  #절대 수정 금지
          format_sql: true
        show-sql: true
        defer-datasource-initialization: true
        properties:
          hibernate:
            default_batch_size: 100
      datasource:
        hikari:
          driver-class-name: org.h2.Driver
          jdbc-url: jdbc:h2:mem:appling;mode=mysql
          #      jdbc-url: jdbc:h2:tcp://localhost/~/appling
          username: sa
          password:

    application.yml파일에서도 추가로 h2 설정을 해주었다.

    728x90
    반응형

    'appling 프로젝트' 카테고리의 다른 글

    [appling] Product 수정  (0) 2024.09.04
    [appling] poroduct 등록  (0) 2024.09.04
    [appling] 프로젝트 기초 설계 (Swagger 설정)  (0) 2024.08.30
    [appling] use case, erd 작성  (0) 2024.08.29
    [appling] 프로젝트 설정  (1) 2024.08.29
Designed by Juno.