회원을 가입하고 아이디를 통해 조회할 수 있는 프로그램에서 테스트 코트를 작성해 보자
이렇게 그냥 일반적인 자바 코드를 통해 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 |