테스트 코드를 하는 이유?
💬 테스트 코드는 유지보수의 비용을 줄여주는 것이 핵심인 것 같다. 문제를 발견하는 것은 개발부터 애플리케이션 배포 단계까지 모두 가능하다. 하지만 문제 발견 시점이 애플리케이션 배포 단계까지 가까워질수록 드는 비용이 기하급수적으로 높아지는 것 같다. 테스트 코드를 작성하여 개발 단계에서 가장 적은 비용으로 문제를 해결해야 한다.
그동안 테스트를 작성하지 않았던 이유..?
💬 모든 테스트 코드가 옳은 건 아닌 것 같다. 코드 작성하는 데 드는 비용이 유지보수에 드는 비용보다 높다면 좋지 않은 테스트라고 생각한다. 이러한 기준 때문에 나는 테스트 코드를 작성해야 하는 것과 아닌 것을 선택하기가 어렵다. 테스트 코드를 멀리하게 되고 애플리케이션 동작 확인으로만 유지보수를 했다. 이것은 습관이 되었고 이제는 당연하게 테스트를 작성하지 않게 되었다.
이번에 해보려고 하는 것은?
💬 테스트 코드는 협업에 있어서 필수적이라고 생각한다. 각자 작업한 코드를 합치는 데에 있어 원활하게 해주는 핵심적인 요소라고 생각하기 때문이다. 이번에는 테스트 코드를 무조건 해봐야겠다는 생각을 했다. 이전에 좋은 테스트 코드 작성에 대한 책도 읽었지만 뜬구름 잡는 이야기 같아 적용해보지 못했다. 이번에 시간도 짧은뿐더러 좋은 테스트 코드를 작성을 찾다 보면 아무것도 하지 않을 것 같다. 오직 코드 커버리지를 높이는 데에 치중하는 테스트 코드를 작성해보려고 한다. 테스트 코드를 작성해 보면서 몸소 느껴봐야겠다. 그 이후 다시 한번 테스트 코드 작성에 대한 책을 읽어봐야겠다.
Jacoco 설정
💬 테스트 코드 커버리지 측정을 위해 자바에서 쉽게 적용해 볼 수 있는 Jacoco를 사용하기로 했다. 테스트 이후 바로 적용할 수 있도록 했으며, 테스트 커버리지는 INSTRUCTION, BRANCH 0.8을 최소치로 설정했다.
✔ 적용
plugin {
id "jacoco"
}
tasks.named('test') {
useJUnitPlatform()
finalizedBy jacocoTestReport
}
jacoco {
toolVersion = "0.8.8"
reportsDirectory = layout.buildDirectory.dir("$buildDir/reports/jacoco")
}
jacocoTestReport {
afterEvaluate {
getClassDirectories().setFrom(classDirectories.files.collect {
fileTree(dir: it, exclude: [
"**/*Controller*",
"**/*Config*",
"**/*LifegramApplication*",
"**/*Builder*",
"**/*Exception*"
])
})
}
reports {
xml.required = false;
csv.required = false;
html.outputLocation = layout.buildDirectory.dir("$buildDir/reports/html-report")
}
finalizedBy jacocoTestCoverageVerification
}
jacocoTestCoverageVerification {
violationRules {
rule {
element = "CLASS"
limit {
counter = "INSTRUCTION"
value = "COVEREDRATIO"
minimum = 0.80
}
limit {
counter = "BRANCH"
value = "COVEREDRATIO"
minimum = 0.80
}
excludes = [
"**.*Builder",
"**.LifegramApplication",
"**.*Config",
"**.*Controller",
"**.*Exception*"
]
}
}
}
✔ 적용 결과
'개발일지 > TIL' 카테고리의 다른 글
[230727] [클론] Lifegram 테스트 코드 작성 (3) (0) | 2023.07.27 |
---|---|
[230726] [클론] Lifegram 테스트 코드 작성 (2) (0) | 2023.07.26 |
[230724] [클론] Lifegram CI/CD 이슈 (0) | 2023.07.24 |
[230723] [클론] Lifegram 작업 (2) (0) | 2023.07.23 |
[230722] [클론] Lifegram 작업 (1) (0) | 2023.07.22 |