Inflearn brand logo image

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

작성자 없음

작성자 정보가 삭제된 글입니다.

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

JPA와 DB 설정, 동작확인

MemberRepositoryTest junit5로 고친후 오류발생 + junit4를 사용해야만 할까요?

작성

·

380

·

수정됨

0

junt4로 gradle에서 설정하려고 하면 오류가 발생해서 juit5로 하는 중입니다.

 

MemberRepositoryTest를

junit5버전으로 고쳐서 아래의 코드로 실행했는데 오류가 나고 있습니다


import jpabook.jpashop.Member; import jpabook.jpashop.MemberRepository; //import jpabook.jpashop.domain.Member; //import jpabook.jpashop.repository.MemberRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.transaction.annotation.Transactional; @ExtendWith(SpringExtension.class) // JUnit 5 방식 @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() { Member member = new Member(); member.setUsername("memberA"); Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); Assertions.assertThat(findMember).isEqualTo(member); // JPA 엔티티 동일성 보장 } }


밑에는 오류입니다.

Unable to find a @SpringBootConfiguration by searching packages upwards from the test. You can use @ContextConfiguration, @SpringBootTest(classes=...) or other Spring Test supported mechanisms to explicitly declare the configuration classes to load. Classes annotated with @TestConfiguration are not considered.

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration by searching packages upwards from the test. You can use @ContextConfiguration, @SpringBootTest(classes=...) or other Spring Test supported mechanisms to explicitly declare the configuration classes to load. Classes annotated with @TestConfiguration are not considered.

at org.springframework.util.Assert.state(Assert.java:79)



1. @SpringBootTest(classes=...)로 명시적으로 설정 클래스 지정

2. @SpringBootApplication이 있는 클래스의 위치 확인
3. @ContextConfiguration을 사용해서 명시적으로 설정 클래스 지정

이세가지를 시도해도 안되고 있습니다. 아니면 juni4룰 사용해야만 할까요?


build.gradle에 JUnit4 추가

testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" }
를 하면

Build file 'C:\Users\Peter\Desktop\study\jpashop\build.gradle' line: 45

A problem occurred evaluating root project 'jpashop'.

> Could not find method testImplementation() for arguments [org.junit.vintage:junit-vintage-engine, build_55eer8btj8rd1l6xp0yqapa0y$_run_closure6@6e20627f] on root project 'jpashop' of type org.gradle.api.Project.


라고 나옵니다.


답변 3

0

Junit5로 테스트하시는분은 이렇게 하시면 됩니다

이 코드로도 실행했는데 안되고 있습니다.
package jpabook.jpashop.member;에 빨간줄이 그어지며
CONDITIONS EVALUATION REPORT라며 오류가 발생합니다.

0

안녕하세요, 인프런 AI 인턴입니다. peter님께서 겪고 계신 문제는 스프링 부트 테스트에서 기본 설정 클래스를 찾지 못하는 오류입니다. 이 오류는 주로 @SpringBootApplication이 선언된 클래스의 위치나 설정 클래스가 올바르게 지정되지 않았을 때 발생합니다. 아래의 링크와 설명을 통해 문제를 해결하는 데 도움이 될 수 있도록 안내드립니다.

비슷한 문제와 해결 방법에 대한 기존 답변

  1. Junit5로 테스트하시는분은 이렇게 하시면 됩니다
    댓글을 통해 JUnit5로 전환 시 발생하는 환경 설정 문제에 대한 피드백을 제공하고 있습니다. 여기서 설명한 방법은 @ExtendWith(SpringExtension.class)를 사용하는 JUnit5 방식에 대한 내용이며, @SpringBootTest의 올바른 사용법을 다루고 있습니다.

문제 해결을 위한 기본 확인 사항

  1. @SpringBootApplication 위치 확인: 테스트 실행 시 스프링이 설정 클래스를 탐색할 수 있도록 @SpringBootApplication이 포함된 클래스가 루트 패키지에 위치해야 합니다.

  2. 명시적인 설정 클래스 지정: @SpringBootTest(classes=MyApplication.class)와 같이 테스트에 사용할 설정 클래스를 명시적으로 지정해 보세요. (MyApplication@SpringBootApplication이 붙어있는 메인 애플리케이션 클래스를 의미합니다.)

  3. 테스트 패키지 구조 확인: MemberRepositoryTest 클래스가 메인 애플리케이션 클래스와 다른 패키지에 위치한 경우, 해당 패키지와 애플리케이션 클래스가 같은 루트 디렉토리를 공유하고 있는지 확인해야 합니다.

이 외에도 발생할 수 있는 구체적인 설정 문제나 코드 상의 이슈가 있을 수 있습니다. 위의 제안 사항을 모두 시도했음에도 해결되지 않을 경우, 프로젝트 구조와 설정을 상세히 검토해야 할 가능성이 있습니다.

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

-1

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

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

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

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

https://bit.ly/3fX6ygx


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


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

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

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


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

https://drive.google.com/file/d/1PBHzDQJ0Odvh2KWMa_BTOu3PZqHrMJkj/view?usp=drive_link

MemberRepositoryTest를 실행하면

adfg.JPG.webp

 

adfs.JPG.webp

 


이렇게 됩니다. junit5로 하고 있는데 이런식으로 오류가 발생합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기