개요
우분투 서버 내에 배포된 프로젝트 내에서 gradle wrapper를 사용해서 빌드를 시도했는데, 다음과 같은 에러가 발생했다.
> Task :compileTestJava FAILED
... : error: cannot find symbol log.info("chatRoomEntity = {}", chatRoomEntity);
^
symbol: variable log location: class ChatRoomRepositoryTest
에러 메시지를 보니 로거가 생성되지 않은 것으로 보였다. 메인 코드에서는 문제가 없던 걸 보니 테스트쪽에서 롬복 어노테이션(@Slf4j)을 인식하지 못한 것으로 보였다.
문제가 발생한 테스트 클래스
@Slf4j
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class ChatRoomRepositoryTest {
@Autowired
ChatRoomRepository chatRoomRepository;
@Test
void test_findAll() {
List<ChatRoomEntity> chatRoomEntities = chatRoomRepository.findAll();
for (ChatRoomEntity chatRoomEntity : chatRoomEntities) {
log.info("chatRoomEntity = {}", chatRoomEntity);
}
}
@Test
void test_fetchAll() {
List<ChatRoomEntity> chatRoomEntities = chatRoomRepository.fetchAll();
for (ChatRoomEntity chatRoomEntity : chatRoomEntities) {
log.info("chatRoomEntity = {}", chatRoomEntity);
}
}
}
관련해서 해결 방법을 찾아보니 전부 다 implementation 'org.projectlombok:lombok' 외에 build.gradle 파일에 아래 코드를 추가하라는 말 밖에 없었다. 물론 기존에 이미 들어가 있었기 때문에 전혀 해결되지 않았다..
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
해결
testAnnotationProccesor을 통해 테스트 코드에서도 롬복 어노테이션 인식이 가능하게끔 아래 코드를 추가했더니 간단히 해결되었다.
testAnnotationProcessor 'org.projectlombok:lombok' //추가