appling 프로젝트
[appling] 코드품질 관련 설정 (jacoco)
studyingJuno
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
반응형