반응형

📝Junit5

JunitJava에서 가장 많이 사용되는 테스트 프레임워크로 단위 테스트를 작성하고 실행하는데 사용됩니다.

 

 

📝테스트 코드 작성팁

  • 일반적으로 테스트 코드를 작성할 때에는 순수 자바코드로만 실행 가능하게끔 만드는 게 좋다. (스프링에 종속되거나 하지 않게끔)
  • given, when, then의 원칙을 지키면서 작성하면 좋다.
  • 테스트가 실패하는 경우도 테스트를 만들어야한다.

 

📝Junit5 예제 코드

package com.spring.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 findMemmber = memberService.findMember(1L);

    // then
    Assertions.assertThat(member).isEqualTo(findMemmber);

  }

}

@Test단위테스트 실행 단위를 설정한다.

 

package com.spring.core.discount;

import static org.assertj.core.api.Assertions.assertThat;

import com.spring.core.member.Grade;
import com.spring.core.member.Member;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

class RateDiscountPolicyTest {
  RateDiscountPolicy discountPolicy = new RateDiscountPolicy();
  @Test
  @DisplayName("VIP는 10% 할인이 적용되어야 한다.")
  void vip_o() {
    //given
    Member member = new Member(1L, "memberVIP", Grade.VIP);
    //when
    int discount = discountPolicy.discount(member, 10000);
    //then
    assertThat(discount).isEqualTo(1000);
  }
  @Test
  @DisplayName("VIP가 아니면 할인이 적용되지 않아야 한다.")
  void vip_x() {
    //given
    Member member = new Member(2L, "memberBASIC", Grade.BASIC);
    //when
    int discount = discountPolicy.discount(member, 10000);
    //then
    assertThat(discount).isEqualTo(0);
  }
}

@DisplayName으로 Test 명명이 가능하다. (실패케이스와 성공케이스 두개 다 설정)

 

 

class MemberServiceTest {
  MemberService memberService;
  @BeforeEach
  public void beforeEach() {
    AppConfig appConfig = new AppConfig();
    memberService = appConfig.memberService();
  }
  
  @AfterEach
  void afterEach() {
     memberRepository.clearStore();
  }
}

@BeforeEach테스트 코드를 실행하기 전에 실행시켜야할 것들을 작성할 수 있다.

@AfterEach의 경우 테스트 코드를 실행한 후 실행시켜야할 것들을 작성할 수 있다.

 

반응형