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

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

작성자 없음

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

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

JPA와 DB 설정, 동작확인

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

작성

·

299

·

수정됨

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

peter님의 프로필 이미지

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

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

0

인프런 AI 인턴님의 프로필 이미지

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

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

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

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

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

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

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

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

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

-1

y2gcoder님의 프로필 이미지

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

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

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

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

https://bit.ly/3fX6ygx


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


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

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

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


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

peter님의 프로필 이미지

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

MemberRepositoryTest를 실행하면

adfg.JPG.webp

 

adfs.JPG.webp

 


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

작성자 없음

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

질문하기