작성자 없음
작성자 정보가 삭제된 글입니다.
24.02.03 19:30 작성
·
2.9K
·
수정됨
0
[질문 내용]
회원기능 테스트에서 분명 강사님이 하신거랑 똑같이 따라했고 오타가 있을까하여 강의 소스 코드도 점검하고 복사붙여넣기 까지 했는데 같은 오류가 계속 반복해서 발생합니다..
오류:
java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@f849027 testClass = jpabook.jpashop.service.MemberServiceTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@5c2375a9, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@492691d7, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@67545b57, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@1c93f6e1, org.springframework.boot.test.context.SpringBootTestAnnotation@5495e57], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
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:247)
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.springframewo
이 링크와 같은 문제인 것 같은데 h2를 재설치 해도 해결 되지 않네요 ㅜㅜ 도움 받을 수 있을까요?
package jpabook.jpashop.service;
import jpabook.jpashop.domain.Member;
import jpabook.jpashop.repository.MemberRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import jakarta.persistence.EntityManager;
import static org.junit.Assert.*;
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class MemberServiceTest {
@Autowired MemberService memberService;
@Autowired MemberRepository memberRepository;
@Autowired EntityManager em;
@Test
public void 회원가입() throws Exception {
//given
Member member = new Member();
member.setName("kim");
//when
Long savedId = memberService.join(member);
//then
assertEquals(member, memberRepository.findOne(savedId));
}
@Test(expected = IllegalStateException.class)
public void 중복_회원_예외() throws Exception {
//given
Member member1 = new Member();
member1.setName("kim");
Member member2 = new Member();
member2.setName("kim");
//when
memberService.join(member1);
memberService.join(member2); //예외가 발생해야 한다!!!
//then
fail("예외가 발생해야 한다.");
}
}
package jpabook.jpashop.repository;
import jpabook.jpashop.domain.Member;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import jakarta.persistence.EntityManager;
import java.util.List;
@Repository
@RequiredArgsConstructor
public class MemberRepository {
private final EntityManager em;
public void save(Member member) {
em.persist(member);
}
public Member findOne(Long id) {
return em.find(Member.class, id);
}
public List<Member> findAll() {
return em.createQuery("select m from Member m", Member.class)
.getResultList();
}
public List<Member> findByName(String name) {
return em.createQuery("select m from Member m where m.name = :name", Member.class)
.setParameter("name", name)
.getResultList();
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
‘Failed to load ApplicationContext’ 오류는 스프링 부트 테스트를 실행할 때 애플리케이션 컨텍스트 설정에 문제가 있는 경우 발생합니다. 해당 오류의 가장 일반적인 원인은 다음과 같습니다:
@SpringBootTest
로 테스트할 때 애플리케이션의 설정 파일이 올바르게 위치하고 있는지 확인하세요.강의에서 사용하는 H2 데이터베이스 설정이 테스트 환경과 일치하는지, 데이터베이스 URL이 올바른지, 그리고 H2 데이터베이스가 정상적으로 실행되고 있는지 확인해 보세요.
위 사항들을 점검하시고 문제가 없다면, 테스트 설정 파일이나 application.properties 파일 내의 설정이 테스트 환경과 잘 맞도록 조정해 보세요. 예를 들어, H2 데이터베이스 접속 설정이 잘못되었을 수 있으므로 해당 부분을 다시 검토해 보시기 바랍니다.
질문하신 내용과는 관련이 없지만, 가장 주변적인 내용을 참고할 만한 추가 정보가 제공되어 있습니다:
이 문서에 나와 있는 방법으로 H2 데이터베이스 설정을 점검하시면 도움이 될 수 있습니다.
만약 여러 가지를 시도해도 문제가 해결되지 않는다면, 이슈를 좀 더 자세히 분석하기 위해서는 스프링 부트 관련 로그나 설정 파일 등의 추가 정보가 필요할 수 있습니다.