inflearn logo
강의

Course

Instructor

Real-world! Spring Boot and JPA Utilization 1 - Web Application Development

JPA and DB Configuration, Operation Verification

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

446

작성자 없음

0 asked

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.


라고 나옵니다.


java spring 웹앱 spring-boot jpa

Answer 3

0

peter

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

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

0

communityai8509

안녕하세요, 인프런 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. 문제가 어떻게 나타나는지에 대한 상세한 설명 (오류 화면, 오류 로그 포함)


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

peter

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

MemberRepositoryTest를 실행하면

adfg.JPG.webp

 

adfs.JPG.webp

 


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

sdk 설정 오류

0

44

2

오탈자 - @Transactional

0

53

1

src/test/resources 테스트 경로 문제

0

49

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

62

1

MemberRepositoryTest 실행오류

0

73

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

182

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

136

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

50

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

59

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

100

1

멤버서비스테스트 부분에서 막힙니다.

0

163

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

115

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

117

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

108

1

24분 27초 연관관계 편의 메서드 위치

0

112

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

106

2

빌드 툴, Gradle

0

57

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

73

2

Repository에서 EntityManager 주입 방식 차이

0

87

1

롬복과 사용자 정의 setter 메서드

0

70

1

주문 목록 조회 fetch join 질문드립니다

0

80

1

dirty checking 질문드립니다.

0

79

1

동시성 관련 질문입니다

0

72

1