SpringBootTest에러 - java.lang.IllegalStateException: Failed to load ApplicationContext

이형석·2024년 4월 13일

WelCheck 프로젝트 

목록 보기
13/22

문제상황

repository 인터페이스를 변경하였다.
원래 직접 메서드들을 작성한 Repository 인터페이스를 사용했는데 이를 SpringDataJpa를 상속받은 Repository 인터페이스로 변경했다. 그리고 기존의 회원가입 단위테스트를 바꾼 Repository를 이용해 테스트 해보았다.

    @Test
    public void 회원가입() throws Exception{
        Member member = new Member();
        // userId, password, name, username, address, sex, email
        member.setUserId("yasuo123");
        member.setPassword("password99");
        member.setName("kimyounghan");
        member.setUsername("best yasuo");
        Address address1 = new Address("zipCode", "roadName", "streetNumber", "detail", "reference", "phoneNumber");
        member.setAddress(address1);
        member.setSex(Sex.MALE);
        member.setEmail("yasuo123@gmail.com");
        memberRepository.save(member);
    }

하지만 다음과 같은 오류가 발생했다. (이전에 작성했던 트러블슈팅과 같은 오류이지만, 그 때 방법으로 해결되지 않았다.)

java.lang.IllegalStateException: Failed to load ApplicationContext

해결과정

단위테스트의 결과 콘솔창을 확인 해본 바로는 Repository와 관련된 메시지밖에 없어서 당연히 Repository와 관련된 문제라고 생각하고 찾아보았지만, 아무리봐도 문제가 없는 것 같아 보였다..

문제해결

클래스테스트 단위의 결과 콘솔창에서 warning메시지를 살펴보았다. 그러니 다른 문제가 보였다. 이번에 추가하게 된 SpringSecurity와 관련된 에러 메시지였다.

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'filterChain' defined in class path resource [K2LJ/WelCheck_Backend/config/SecurityConfig.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'filterChain' threw exception with message: Pattern cannot be null or empty

그리고 끝 쪽에 보면 null이나 empty는 cannot이라고 하는 걸 보고 떠오른 것이 있었다. 스프링시큐리티 빈 등록 메서드에서 requestMatchers()에 원래 url을 입력해야하는데 아무것도 안 적으니 컴파일 에러가 떠서 임시로 ""를 넣어놨었다. 그래서 이 부분을 주석처리하고 돌려보니 테스트가 성공적으로 실행되었다.
원래는 당연히 단위 테스트의 결과 콘솔창만 확인했는데, 친구의 도움으로 새로운 문제해결방법을 알게 된 것 같다.

profile
금융IT 개발자

0개의 댓글