Server
gradle 버전에 따른 Lombok 설정 방법
metamong-data
2024. 8. 30. 09:51
728x90
반응형
문제 발생
public class LoginResponseDTOTest {
@Test
public void loginTest() {
String name = "test";
int amount = 1000;
// when
LoginResponseDTO dto = new LoginResponseDTO(name, password);
// then
assertThat(dto.getName()).isEqualTo(name);
assertThat(dto.getPassword()).isEqualTo(password);
}
}
- 위에처럼 lombok 테스트시 variable '변수명' not initialized in the default constructor 라는 오류가 발생하였다.
문제 원인
위에 코드는 이상이 없었고 maven에서 멀쩡히 동작하는 코드였고, 알고 보니 오류의 원인은 gradle의 버전에 따라 lombok 설정이 다른 것이었다.
dependencies {
// Gradle 5.x 미만
implementation 'org.projectlombok:lombok'
}
- gradle에서 Lombok 사용을 위해 아래처럼 build.gradle을 설정 했다.
- 문제는 프로젝트의 Gradle 버전과 lombok 버전이 맞지 않아 생기는 오류라는 것을 알게 되었다.
- Maven처럼 버전에 상관없이 같을 줄 알았지만 gradle 은 버전에 따라서 설정이 다른 것을 알지 못 했고, 그 결과로 gradle 버전을 확인하지 않고 설정 해버렸던 오류이다.
해결 법
./gradlew --version
- 위의 명령어를 이용해서 현재 프로젝트의 gradle 버전을 확인 한 후 버전에 맞게 설정을 해준다.
dependencies {
// Gradle 5.x 이상
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
결론
- 테스트 작업 시 variable '변수명' not initialized in the default constructor라는 해당 오류 발생 시 해당 프로젝트의 Gradle 버전 확인해야한다.
- Gradle 버전(5.x 미만, 5.x 이상)에 따라 lombok 설정 후 테스트 재 진행
참고
https://thisiswoo.github.io/development/lombok-setting-according-to-gradle-version.html
728x90