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