스프링

JUnit 테스트 코드 작성하기

salmon16 2023. 7. 5. 18:24

회원을 가입하고 아이디를 통해 조회할 수 있는 프로그램에서 테스트 코트를 작성해 보자

이렇게 그냥 일반적인 자바 코드를 통해 new member와 findMember가 같은지를 print 된 것을 직접 보며 findMemer 함수가 잘 작동하는지 가입이 잘 되었는지 확인을 할 수 있지만 이는 좀 더 복잡한 테스트 코드를 작성하게 되면 복잡하고 개발자가 직접 print 문을 확인해야 한다는 단점이 있다

 

인텔리제이에서 테스트를 하고 싶으면 테스트하고 싶은 클래스에서 ctrl + shift+ v를 누르면 쉽게 테스트 코드를 작성할 수 있다.

그래서 JUnit을 활용한 테스트 코드를 작성해 보자

JUint을 활용하기 위해서 import를 해주어야 한다.

import org.junit.jupiter.api.Test;

그리고 한 매소드가 테스트 단위라는 것을 지정하기 위해 @Test라는 어노테이션을 매소드 위에 붙여준다.

테스트 이름을 @DisplayName("테스트 이름")을 통해 설정할 수 도 있다.

AssertJ 라이브러리에서 Assertions.assertThat.isEqulto 함수를 이용하여 두 객체가 동일한 객체인지 확인해 준다 

import org.assertj.core.api.Assertions;

package hello.core.member;


import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

public class MemberServiceTest {

    MemberService memberService = new MemberServiceImpl();
    @Test
    void join() {
        //given
        Member member = new Member(1L, "memberA", Grade.VIP);
        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);
        //then
        Assertions.assertThat(member).isEqualTo(findMember);

    }
}

테스트 코드 작성 시 given, when, then 구조를 활용하면 구조적으로 테스트 코드를 더 잘 작성할 수 있다.

given은 주어진 것 when은 이 코드를 수행할 때 then은 이것이 성립하는 가를 뜻한다.

위 테스트 코드를 실행하면 

테스트가 성공했다고 초록색으로 뜬다.

출처 : 인프런 스프링 핵심 원리 - 기본 편  김영한

'스프링' 카테고리의 다른 글

AppConfig  (0) 2023.07.06
OCP, DIP 원칙이 위배되는 역할과 구현 분리  (0) 2023.07.06
함수 작성 중 테스트 코드 작성하기  (0) 2023.07.06
좋은 객체 지향의 설계 SOLID  (0) 2023.07.04
객체지향의 다형성  (0) 2023.07.04