ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • 구조화된 동시성
  • node exporter basic auth
  • 가상 스레드 예외 핸들링
  • 동시성 제어
  • tree
  • nginx basic auth
  • UserDetailsService
  • AccessDecisionVoter 커스텀
  • AuthenticationException
  • mysql
  • 가상 스레드
  • java
  • FilterSecurityInterceptor
  • scope value
  • nGrinder
  • 동일성
  • 인가(Authorization) 처리
  • jpa
  • querydsl
  • restdocs enum
  • 정규표현식
  • VirtualThread Springboot
  • junit5
  • 트랜잭션
  • StructuredConcorrency
  • DataJpaTest
  • restdocs custom
  • LocalDateTime
  • AccessDecisionManager
  • 동등성

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

테스트/JUnit

JUnit5 - Java에서의 단위테스트3 - 테스트 인스턴스들

2022. 8. 21. 21:39

JUnit은 테스트 메소드 마다 테스트 인스턴스를 새로 만든다.

  • 기본 전략.
  • 테스트 메소드를 독립적으로 실행하여 예상치 못한 부작용을 방지하기 위함이다.
  • 이 전략을 JUnit 5에서 변경할 수 있다.
    • 즉 테스트마다 필드를 공유하지 않는다.
    • 테스트 메서드마다 System.out.println(this) 를 찍어보면 인스턴스가 다르단 걸 알 수 있다.

@TestInstance(Lifecycle.PER_CLASS)

  • 테스트 클래스당 인스턴스를 하나만 만들어 사용한다. -> 하나의 인스턴스를 공유한다
  • 경우에 따라, 테스트 간에 공유하는 모든 상태를 @BeforeEach 또는 @AfterEach에서 초기화 할 필요가 있다.
  • @BeforeAll과 @AfterAll을 인스턴스 메소드 또는 인터페이스에 정의한 default 메소드로 정의할 수도 있다.
    • 이걸 사용하면 static 키워드가 필요한 메소드에서 static이 필요 없게 된다.

JUnit 5 테스트 순서

  • 제대로 된 단위 테스트라면, 다른 테스트와 동시에 실행되더라도 다른 테스트 코드에 영향을 주지 않는다.
    • 서로간에 의존성이 없어야 한다. (다른 코드에 영향 x)
    • 그래서 순서가 상관이 없어야 한다.

실행할 테스트 메소드 특정한 순서에 의해 실행되지만
어떻게 그 순서를 정하는지는 분명히 하지 않는다.
(테스트 인스턴스를 테스트 마다 새로 만드는 것과 같은 이유)

경우에 따라, 특정 순서대로 테스트를 실행하고 싶을 때도 있다.
그 경우에는 테스트 메소드를 원하는 순서에 따라 실행하도록
@TestInstance(Lifecycle.PER_CLASS)와 함께 @TestMethodOrder를 사용할 수 있다. (테스트 메서드의 실행 순서를 정하는것)

  • MethodOrderer 구현체를 설정한다.
  • 기본 구현체
  • Alphanumeric
  • OrderAnnoation
  • Random
@TestMethodOrder(MethodOrderer.OrderAnnotation.class) // <<<!!
class StudyTest {...

  @Order(2)
  @Test
  void test2() {}

  @Order(3)
  @Test
  void test3() {}

  @Order(1)
  @Test
  void test1() {}
}

1 -> 2 -> 3 순서로 실행되고

  • 낮은 값이 높은 우선순위를 갖는다.
  • 값이(순위) 같으면 둘중 아무거나 먼저 실행되는거 같다

출처

  • 인프런 백기선님 강의 더 자바, 애플리케이션을 테스트하는 다양한 방법

'테스트 > JUnit' 카테고리의 다른 글

Spring Boot JPA Test @DataJpaTest 기본 설정  (3) 2022.08.27
JUnit5 - Java에서의 단위테스트5 Mock, Mockito, Stup  (0) 2022.08.21
JUnit5 - Java에서의 단위테스트4 Mock, Mockito  (0) 2022.08.21
JUnit5 - Java에서의 단위테스트2 - 테스트 반복  (0) 2022.08.21
JUnit5 - Java에서의 단위테스트 1  (0) 2022.08.21
    '테스트/JUnit' 카테고리의 다른 글
    • JUnit5 - Java에서의 단위테스트5 Mock, Mockito, Stup
    • JUnit5 - Java에서의 단위테스트4 Mock, Mockito
    • JUnit5 - Java에서의 단위테스트2 - 테스트 반복
    • JUnit5 - Java에서의 단위테스트 1
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바