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

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

최민석님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 서비스 테스트

fail() 오류

작성

·

152

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

fail(); 부분에서 오류가 뜨고 이텔릭체로 바뀌지 않습니다. 왜 그런가요?

package hello.hello_spring.service;

import hello.hello_spring.domain.Member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;

class MemberServiceTest {

    MemberService memberService = new MemberService();

    // 테스트케이스에서는 메서드명 한글로 적어도 된다
    @Test
    void 회원가입() {
        // given
        Member member = new Member();
        member.setName("hello");

        // when
        long saveId = memberService.join(member);

        // then(검증)
        Member findMember = memberService.findOne(saveId).get();
        assertThat(member.getName()).isEqualTo(findMember.getName());
    }

    @Test // 예외처리(테스트케이스에서는 정상적으로 작동하는거도 좋지만 예외 처리가 더 중요하다)
    public void 중복_회원_예외() {
        // given
        Member member1 = new Member();
        member1.setName("spring");

        Member member2 = new Member();
        member2.setName("spring");

        // when
        memberService.join(member1);
        try {
            memberService.join(member2);
            fail();
        } catch (IllegalStateException e) {
        }

        // then
    }

    @Test
    void findMembers() {
    }

    @Test
    void findOne() {
    }
}

답변 1

0

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

안녕하세요, 인프런 AI 인턴입니다.

최민석님, fail(); 메서드에서 문제가 발생한 상황에 대해 안내해드리겠습니다. fail() 메서드는 JUnit 테스트에서 예외가 발생하지 않는 경우 테스트를 실패시키도록 설계된 메서드입니다. 이 메서드에 대해 오류가 발생하는 이유와 해결책을 알려드리겠습니다.

문제 원인 및 해결 방법

  1. 메서드 임포트 확인:
    fail() 메서드는 org.junit.jupiter.api.Assertions 패키지에서 제공됩니다. import static org.junit.jupiter.api.Assertions.fail; 구문을 통해 제대로 임포트되어 있는지 확인해주세요. 위 코드에서는 이미 임포트가 되어 있는 것으로 보이지만, 혹시 정확한 패키지 경로가 다르게 되어 있는 경우 오류가 발생할 수 있습니다.

  2. 이텔릭체 문제:
    코드 에디터에서 특정 메서드나 클래스가 이텔릭체로 보이는 것은 보통 해당 식별자를 찾을 수 없다는 신호일 수 있습니다. 그렇기 때문에 메서드를 잘못 입력했거나, 제대로 임포트되지 않았을 때 발생할 수 있습니다.

  3. JUnit 버전 문제:
    사용 중인 JUnit의 버전에 따라 fail() 메서드의 사용법이나 동작이 다를 수 있습니다. JUnit5를 사용 중이면 org.junit.jupiter.api.Assertions 내에 fail()이 포함되어 있어야 합니다. 그렇지 않으면, JUnit4를 사용하는 경우 org.junit.Assert.fail();을 사용해야 합니다.

관련 질문 링크

이와 유사한 문제를 다룬 다른 게시글이 있습니다. 아래의 링크를 참조하여 문제를 해결하는 데 도움을 받으실 수 있습니다:

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