회원가입 테스트 오류
1136
작성한 질문수 12
안녕하세요 강사님 항상 좋은 강의와 피드백 감사드립니다
다름이 아니라 이번에 강의 중 '회원가입' 테스트를 그대로 따라 코딩하였으나 실행에 오류가 뜹니다. 관련하여 사진과 오류글을 그대로 올려보니 한 번 확인해주시면 감사하겠습니다!
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:124)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [jpabook.jpashop.JpashopApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [jpabook.jpashop.repository.MemberRepository] conflicts with existing, non-compatible bean definition of same name and class [jpabook.jpashop.domain.MemberRepository]
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:189)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:771)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:763)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:438)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:339)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:123)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
... 25 more
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [jpabook.jpashop.repository.MemberRepository] conflicts with existing, non-compatible bean definition of same name and class [jpabook.jpashop.domain.MemberRepository]
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:349)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:287)
at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132)
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:296)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:250)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:207)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:175)
... 38 more
답변 2
2
안녕하세요. taetae님, 공식 서포터즈 OMG입니다
@Repository, @Component, @Service 등의 어노테이션을 클래스 위에 작성하면 name 지정을 따로 하지 않는 이상class 이름의 첫글자를 소문자로 바꾼 클래스의 이름을 스프링 bean 으로 등록하는데요, MemberRepository의 클래스가 서로 다른 패키지에 총 2개가 존재하고 @Repository 어노테이션이 명시 되어 있어 동일한 이름의 bean 등록(memberRepository)을 시도하려 하기에 문제가 발생하는 것입니다. 아직 스프링 환경에 익숙하지 않다면 원활한 강의 수강을 위해 강의에서 진행하는 변수명, 클래스명, 클래스 위치, 패키지 명 등 동일하게 진행해주시고, 스프링부트의 start.spring.io에서 설정을 제공하는 버전은 버전업으로 인해 계속 달라질 수 있기 때문에 선택할 수 있는 옵션에서 하위버전을 고르시되 버전이 바뀜에 따라 설정에서 문제가 되는 이슈는 메뉴얼에 적어놓으시니 참고하셔서 강의수강하시면 됩니다.
주석으로 정리하면서 열심히 공부하시는 모습 보기 좋습니다^^
감사합니다.
0
감사합니다! 다시 MemberRepository를 확인하니 제가 도메인폴더와 리포지토리 폴더에 같은 이름의 클래스를 두 개나 만들어 놓았네요!!
피드백 주셔서 감사합니다:)
2
안녕하세요. taetae님, 공식 서포터즈 OMG입니다.
첨부하신 로그를 보면 주시해야할 부분은
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [jpabook.jpashop.repository.MemberRepository] conflicts with existing, non-compatible bean definition of same name and class [jpabook.jpashop.domain.MemberRepository]
이 부분인거 같은데요. 첨부하신 이미지에 보이는 [jpabook.jpashop.repository.MemberRepository]
과 화면에는 보이지 않지만 [jpabook.jpashop.domain.MemberRepository]
관련하여 충돌 나는 것으로 보입니다. domain 패키지 하위에 MemberRepository가 존재하는지요?
해당 문제 관련하여 답변 주시면 이어서 도움 드릴 수 있도록 하겠습니다.
감사합니다.
0
저도 같은 문제 였는데, 중복되는 MemberRepository 를 삭제하니까 정상 작동 됩니다. 이전 강의에서 이어졌던 내용들이 뒷부분에 충돌이 되면서 문제가 생기는 듯 합니다.
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
28
1
sdk 설정 오류
0
70
2
오탈자 - @Transactional
0
67
1
src/test/resources 테스트 경로 문제
0
67
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
71
1
MemberRepositoryTest 실행오류
0
91
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
197
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
154
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
58
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
82
1
기본 생성자
0
67
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
107
1
멤버서비스테스트 부분에서 막힙니다.
0
176
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
124
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
129
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
122
1
24분 27초 연관관계 편의 메서드 위치
0
118
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
114
2
빌드 툴, Gradle
0
65
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
82
2
Repository에서 EntityManager 주입 방식 차이
0
97
1
롬복과 사용자 정의 setter 메서드
0
78
1
주문 목록 조회 fetch join 질문드립니다
0
91
1
dirty checking 질문드립니다.
0
87
1





