반응형
📝Junit5
Junit은 Java에서 가장 많이 사용되는 테스트 프레임워크로 단위 테스트를 작성하고 실행하는데 사용됩니다.
📝테스트 코드 작성팁
- 일반적으로 테스트 코드를 작성할 때에는 순수 자바코드로만 실행 가능하게끔 만드는 게 좋다. (스프링에 종속되거나 하지 않게끔)
- 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의 경우 테스트 코드를 실행한 후 실행시켜야할 것들을 작성할 수 있다.
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 유명 라이브러리 (0) | 2023.12.08 |
---|---|
[Java] Enum (열거형), 사용 예제 (0) | 2023.12.08 |
[Java 17] [클린코드] Switch-Case 개선 시키기 (0) | 2023.12.08 |
[Java] Method Reference 메소드 레퍼런스[축약] (시그니처) :: (0) | 2023.08.08 |
[Java] Stream 스트림 (range, rangeClosed, iterate, IntStream, of, forEach, filter, map, findAny, collect, toList, joining, toSet, count, distinct) [Lazy Evaluation] (0) | 2023.08.08 |