jacoco 플러그인 세팅
`build.gradle` 파일에 다음과 같은 내용들을 추가한다.
plugins {
id 'jacoco'
}
tasks.named('test') {
finalizedBy(jacocoTestReport)
}
jacoco {
toolVersion = "0.8.12"
}
test {
useJUnitPlatform()
finalizedBy jacocoTestReport
}
jacocoTestReport {
dependsOn test
reports {
xml.required = false
csv.required = false
html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
}
추가 후의 build.gradle 파일은 다음과 같다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.11'
id 'io.spring.dependency-management' version '1.1.6'
id 'jacoco'
}
group = 'com.woojoovove'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(19)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
finalizedBy(jacocoTestReport)
}
jacoco {
toolVersion = "0.8.12"
}
test {
useJUnitPlatform()
finalizedBy jacocoTestReport
}
jacocoTestReport {
dependsOn test
reports {
xml.required = false
csv.required = false
html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
}
테스트 실행
`./gradlew jacocoTestReport` 명령어를 실행한다. 만약 테스트 리포트가 생성이 되지 않는 등 기대한 결과값이 나오지 않는다면 `./gradlew jacocoTestReport --info`를 실행하여 로그를 확인하면 된다.
테스트 리포트 확인하기
`CircleId` 클래스의 테스트 커버리지가 80%로 나오는데 그 이유는 equals 메소드 때문이다.
equals() 메소드의 특정 케이스에 대해 테스트가 되지 않고 있다고 한다.
테스트 코드 수정
실제로 다른 클래스의 객체와 비교하는 테스트 케이스가 없어 다음과 같이 추가해주었다.
@Test
public void returnFalseWhenComparedWithDifferentClass() {
CircleId circleId = new CircleId("circleId");
CircleName differentObj = new CircleName("circleName");
assertNotEquals(circleId, differentObj);
}
그럼에도 여전히 동일한 부분이 MissedBranch로 지목되어 null과 비교하는 경우에 대해 `assertNotEquals(null, circleId)`였던 것을 `assertNotEquals(circleId, null)`로 다음과 같이 바꾸니 100%로 나온다.
@Test
public void returnFalseWhenComparedWithNull() {
CircleId circleId = new CircleId("circle");
assertNotEquals(circleId, null);
}
'DDD > 도메인 주도 설계 철저 입문' 카테고리의 다른 글
애그리게이트란 - 「도메인 주도 설계 철저 입문」 12장 (1) (0) | 2024.12.17 |
---|---|
도메인 규칙을 코드로 제대로 표현하는 법 - 「도메인 주도 설계 철저 입문」 11장 (4) (0) | 2024.12.12 |
엔티티 중복 확인은 도메인 서비스인가 앱 서비스인가 - 「도메인 주도 설계 철저 입문」 11장 (3) (2) | 2024.12.10 |
Entity Factory 패턴 - 「도메인 주도 설계 철저 입문」 11장 (2) (1) | 2024.11.22 |
DDD 프로젝트 폴더 구조 - 「도메인 주도 설계 철저 입문」 11장 (1) (1) | 2024.11.20 |