인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

이소민님의 프로필 이미지
이소민

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

JPA오류

작성

·

24

0

[질문 내용]
JPA 테스트 코드 오류

============================

CONDITIONS EVALUATION REPORT

============================

Positive matches:

-----------------

AopAutoConfiguration matched:

- @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition)

AopAutoConfiguration.AspectJAutoProxyingConfiguration matched:

- @ConditionalOnClass found required class 'org.aspectj.weaver.Advice' (OnClassCondition)

AopAutoConfiguration.AspectJAutoProxyingConfiguration.CglibAutoProxyConfiguration matched:

- @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition)

ApplicationAvailabilityAutoConfiguration#applicationAvailability matched:

- @ConditionalOnMissingBean (types: org.springframework.boot.availability.ApplicationAvailability; SearchStrategy: all) did not find any beans (OnBeanCondition)

DataSourceAutoConfiguration matched:

- @ConditionalOnClass found required classes 'javax.sql.DataSource', 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType' (OnClassCondition)

- @ConditionalOnMissingBean (types: io.r2dbc.spi.ConnectionFactory; SearchStrategy: all) did not find any beans (OnBeanCondition)

DataSourceAutoConfiguration.PooledDataSourceConfiguration matched:

- AnyNestedCondition 1 matched 1 did not; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.PooledDataSourceAvailable PooledDataSource found supported DataSource; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.ExplicitType @ConditionalOnProperty (spring.datasource.type) did not find property 'type' (DataSourceAutoConfiguration.PooledDataSourceCondition)

- @ConditionalOnMissingBean (types: javax.sql.DataSource,javax.sql.XADataSource; SearchStrategy: all) did not find any beans (OnBeanCondition)

JPA코드를 작성하고 통합 테스트 코드를 작성하니 이와같은 오류가 뜹니다!

테스트 코드는 package hello.hello_spring.service; import hello.hello_spring.domain.Member; import hello.hello_spring.repository.MemberRepository; import jakarta.transaction.Transactional; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @SpringBootTest @Transactional class MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //Given Member member = new Member(); member.setName("hello"); //When Long saveId = memberService.join(member); //Then Member findMember = memberRepository.findById(saveId).get(); assertEquals(member.getName(), findMember.getName()); } @Test public void 중복_회원_예외() throws Exception { //Given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //When memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));//예외가 발생해야 한다. assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } }이렇게 되어있습니다!

답변 2

0

안녕하세요. 이소민님, 공식 서포터즈 y2gcoder입니다.

위에 첨부해주신 로그는 로깅 레벨을 자세하게 설정해주면 나타나는 로그입니다. 스프링 부트가 자동 설정을 통해서 빈을 등록해준 결과를 REPORT 형식으로 안내해주고 있습니다.

============================

CONDITIONS EVALUATION REPORT

============================

Positive matches:

-----------------

 

 

그와는 별개로 테스트 케이스가 실패했다면 IDE 결과에 빨간 표시가 뜨지 않았을까 생각합니다! 빨간 표시가 뜨지 않고 초록색 체크 표시가 떴다면 해당 테스트 는 성공한 것입니다 🙂 만약 빨간 표시가 떴다면

ERROR나 caused by 라는 글자가 포함된 로그를 첨부해주십쇼!

 

 

 

감사합니다.

이소민님의 프로필 이미지
이소민
질문자

12:19:55.913 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [hello.hello_spring.service.MemberServiceIntegrationTest]: MemberServiceIntegrationTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.

12:19:56.090 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration hello.hello_spring.HelloSpringApplication for test class hello.hello_spring.service.MemberServiceIntegrationTest ; 이렇게 뜹니다!

실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명 (오류 화면, 오류 로그 포함)


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 이소민님, JPA 테스트 코드 오류에 관한 질문을 주셨군요. 아래 먼저 확인할 수 있는 몇 가지 사항을 안내드리겠습니다.

  1. 데이터베이스 설정 확인:

    • application.properties 또는 application.yml 파일이 올바르게 설정되어 있는지 확인해보세요. 특히 JDBC URL, 사용자 이름, 비밀번호 등이 JPA와 연결될 수 있도록 세팅되어 있어야 합니다.
    • H2 데이터베이스를 사용하는 경우, H2 콘솔이 정상적으로 켜졌는지도 확인하세요.
  2. 엔티티 클래스 확인:

    • Member 클래스에 @Entity@Id가 올바르게 설정되어 있는지 확인하세요. 이러한 설정이 없으면 Hibernate가 적절히 매핑할 수 없습니다.
  3. 의존성 확인:

    • 프로젝트의 build.gradle이나 pom.xml에 JPA 및 관련 의존성이 제대로 포함되어 있는지 확인하세요. 예를 들어, spring-boot-starter-data-jpacom.h2database:h2 등이 필요합니다.
  4. SpringBoot 테스트 설정:

    • @SpringBootTest 어노테이션이 올바르게 설정되어 있는지 확인해주세요. 이 어노테이션은 적절히 애플리케이션 컨텍스트를 로드하도록 설정되어야 합니다.

유사한 내용을 다루는 다른 질문들도 참고할 수 있습니다. 다음은 추천드리는 링크들입니다.

  • 중복회원예외 test fail: 이 포스트에서는 중복된 회원 가입 시 예외 처리와 관련된 JPA 테스트 케이스 실패에 대한 정보를 제공합니다.
  • MemberServiceTest오류: 이 문의에서는 JPA와 관련된 여러 테스트 에러를 해결하기 위한 방법들을 확인할 수 있습니다.

위 링크들을 통해 여러 사용자들이 직면한 유사한 오류와 해결 방법을 확인하세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이소민님의 프로필 이미지
이소민

작성한 질문수

질문하기