본 캠프_66일차

졸용·2025년 5월 23일

TIL

목록 보기
67/144

테스트 코드 만들어서 테스트 중에 Build 문제를 겪게 되었다.

에러 메시지와 테스트 실패 내용을 종합해 보면,

1. contextLoads() 테스트 실패 (Spring 컨텍스트 로딩 실패)

  • BeanCreationExceptionPersistenceException 발생 → JPA 엔티티 매니저 생성에 실패

  • 보통 다음 문제 때문일 수 있음:

    • 데이터베이스 연결 설정 문제 (예: MySQL 서버 미실행, 접속 정보 오류)
    • JPA 엔티티 설정 오류 (엔티티 클래스, 패키지 스캔 누락 등)
    • Spring Boot 버전과 Hibernate/JPA 라이브러리 버전 충돌
    • jakarta.persistence 관련 문제 → Spring Boot 3 이상에서는 jakarta.* 패키지 사용하는데, 의존성 충돌 가능성

해결 방법:

  • application.properties 또는 application-test.properties 에서 DB 연결 정보가 올바른지 확인
  • MySQL 서버가 실행 중인지 확인
  • spring.jpa.hibernate.ddl-auto 옵션 확인 (create-drop 권장)
  • 의존성 버전 확인 및 Spring Boot, JPA 관련 라이브러리 일치시키기
  • 테스트 시 @SpringBootTest 를 제대로 붙였는지 확인

2. UpdatePostInfoTest > 공백_전달시_값_변경_안됨() 테스트 실패

  • AssertionFailedError → 예상 값과 실제 값이 다름
  • 해당 테스트는 updatePostInfo 메서드가 제목과 내용을 공백으로 받았을 때 원래 값이 유지되는지 검사

원인 추정:

  • post.updatePostInfo(" ", " "); 에서 trim() 처리 로직이 없거나, 공백을 빈 문자열로 인식하지 않는 경우
  • updatePostInfo 메서드의 검증 조건 문제 가능성

해결 방법:

  • updatePostInfo 메서드 내부에서 titlecontent에 대해 아래와 같이 trim() 후 빈 문자열 체크를 추가해야 함:
public void updatePostInfo(String title, String content) {
    if (title != null && !title.trim().isEmpty()) {
        this.title = title;
    }
    if (content != null && !content.trim().isEmpty()) {
        this.content = content;
    }
}
  • 메서드 수정 후 다시 테스트 실행

추가 점검 사항

  • 프로젝트 빌드 시 JDK 버전 확인 (Java 17 이상 권장, Spring Boot 3.x는 Java 17 필요)
  • 의존성 중 MySQL 커넥터, JPA, Hibernate, Spring Boot Starter Data JPA 버전 호환성 체크
  • 테스트 클래스에 @SpringBootTest 등 컨텍스트 로딩이 필요한 경우 붙였는지 확인

여러 점검 사항을 확인했지만 해결하지 못 하고, 추후에 튜터님 방문 후에 인텔리제이 설정에서 Build 설정 변경하여 해결

profile
꾸준한 공부만이 답이다

0개의 댓글