Skip to content

Commit

Permalink
[BE] Jacoco 플러그인을 추가한다. (#66) (#67)
Browse files Browse the repository at this point in the history
* chore: jacoco 플러그인 추가

* [BE] 엔티티가 DB에 저장될때 생성, 수정 시간이 자동으로 저장되게 한다. (#61)

* feat: Entity들의 생성, 수정 시간 저장을 위한 BaseTimeEntity 클래스 구현

* style: 코드 포메팅 수정, 불필요한 import 구문 제거

* chore: jacoco 플러그인 추가
  • Loading branch information
jujubebat authored and Sehwan-Jang committed Aug 9, 2021
1 parent eb59cc1 commit ffb6eb3
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ plugins {
id 'java'
// RestDocs 관련
id 'org.asciidoctor.jvm.convert' version '3.1.0'
// jacoco
id 'jacoco'
}

group = 'com.darass'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
targetCompatibility = '11'

configurations {
compileOnly {
Expand Down Expand Up @@ -49,6 +52,10 @@ dependencies {

test {
useJUnitPlatform()
jacoco {
destinationFile = file("$buildDir/jacoco/jacoco.exec")
}
finalizedBy 'jacocoTestReport'
}

ext {
Expand All @@ -72,4 +79,89 @@ asciidoctor.doLast {

build {
dependsOn asciidoctor
}

jacoco {
// jaCoCo 버전
toolVersion = '0.8.5'

// 테스트 결과 리포트 파일 저장 경로
reportsDir = file("$buildDir/customJacocoReportDir")
}

jacocoTestReport {
reports {
// 원하는 리포트를 켜고 끌 수 있다.
html.enabled true
xml.enabled false
csv.enabled false

// 각 리포트 타입 마다 리포트 저장 경로를 설정할 수 있다.
html.destination file("$buildDir/jacocoHtml")
// xml.destination file("$buildDir/jacoco.xml")
}
finalizedBy 'jacocoTestCoverageVerification'
}

jacocoTestCoverageVerification {
violationRules {
rule {
// 'element'가 없으면 프로젝트의 전체 파일을 합친 값을 기준으로 한다.
// 위의 리포트에서 'Total'로 표시된 부분이다.
limit {
// 'counter'를 지정하지 않으면 default는 'INSTRUCTION'
// 'value'를 지정하지 않으면 default는 'COVEREDRATIO'
minimum = 0.30
}
}

// 여러 룰을 생성할 수 있다.
rule {
// 룰을 간단히 켜고 끌 수 있다.
enabled = true

// 룰을 체크할 단위는 클래스 단위
element = 'CLASS'

// 브랜치 커버리지를 최소한 90% 만족시켜야 한다.
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.80
}

// 라인 커버리지를 최소한 80% 만족시켜야 한다.
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.80
}

// 빈 줄을 제외한 코드의 라인수를 최대 200라인으로 제한한다.
limit {
counter = 'LINE'
value = 'TOTALCOUNT'
maximum = 200
}
// 커버리지 체크를 제외할 클래스들
excludes = [
// '*.test.*',
'*.Kotlin*'
]

}
}
}


task testCoverage(type: Test) {
group 'verification'
description 'Runs the unit tests with coverage'

dependsOn(':test',
':jacocoTestReport',
':jacocoTestCoverageVerification')

tasks['jacocoTestReport'].mustRunAfter(tasks['test'])
tasks['jacocoTestCoverageVerification'].mustRunAfter(tasks['jacocoTestReport'])
}

0 comments on commit ffb6eb3

Please sign in to comment.