danuri
오늘의 기록
danuri
전체 방문자
오늘
어제
  • 오늘의 기록 (307)
    • java (150)
      • java (33)
      • spring (63)
      • jpa (36)
      • querydsl (7)
      • intelliJ (9)
    • kotlin (8)
    • python (24)
      • python (10)
      • data analysis (13)
      • crawling (1)
    • ddd (2)
    • chatgpt (2)
    • algorithm (33)
      • theory (9)
      • problems (23)
    • http (8)
    • git (8)
    • database (5)
    • aws (12)
    • devops (10)
      • docker (6)
      • cicd (4)
    • book (44)
      • clean code (9)
      • 도메인 주도 개발 시작하기 (10)
      • 자바 최적화 (11)
      • 마이크로서비스 패턴 (0)
      • 스프링으로 시작하는 리액티브 프로그래밍 (14)
    • tistory (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • 등가속도 운동
  • SWAGGER
  • Spring
  • Saving Plans
  • Java
  • docker
  • 트랜잭션
  • Security
  • AWS
  • 도메인 주도 설계
  • CICD
  • gitlab
  • RDS
  • S3
  • Bitmask
  • DDD
  • Kotlin
  • mockito
  • ChatGPT
  • POSTGIS
  • Jackson
  • connection
  • PostgreSQL
  • JPA
  • 마이크로서비스패턴
  • reactive
  • nuribank
  • Database
  • Thymeleaf
  • 자바 최적화

최근 댓글

최근 글

hELLO · Designed By 정상우.
danuri

오늘의 기록

java/intelliJ

[Intellij] JUnit5 Stateful Test

2021. 7. 5. 03:58

다음 테스트는 각 테스트(메서드)마다 새롭게 number 멤버 변수가 생성되기 때문에 두 테스트 모두 0이 출력된다.

class NonStatefulTest {

    private int number;

    @Test
    void test1() {
        System.out.println(number++);
    }

    @Test
    void test2() {
        System.out.println(number++);
    }
}

<결과>

0 //test1
0 //test2

 

 

이를 Stateful하게 테스트를 작성하고 싶다면 다음과 같이 애노테이션을 설정하면 된다.

//default: @TestInstance(TestInstance.Lifecycle.PER_METHOD)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class StatefulTest {

    private int number;

    @Test
    void test1() {
        System.out.println(number++);
    }

    @Test
    void test2() {
        System.out.println(number++);
    }
}

<결과>

0 //test1
1 //test2

 

JUnit은 일반적으로 단위 테스트 간에 순서를 보장해주지 않기 때문에 다음과 같이 순서를 부여할 수 있다.

특히, Stateful 테스트에서 순서를 부여하면 원하는 의도대로 테스트 짜기 좋다.

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class StatefulTest {

    private int number;

    @Test @Order(2)
    void test1() {
        System.out.println(number++);
    }

    @Test @Order(1)
    void test2() {
        System.out.println(number++);
    }
}

<결과>

0 //test2
1 //test1

'java > intelliJ' 카테고리의 다른 글

[Intellij] 디버그  (0) 2021.07.13
[Intellij] import문 자동 정리하기  (1) 2021.07.13
[Intellij] 인텔리제이 단축키, 템플릿 정리 - Mac  (2) 2021.06.24
IntelliJ에서 Gradle 사용시 자바 직접 실행  (0) 2021.02.10
IntelliJ에서 Live Template 추가하기  (0) 2021.01.13
    'java/intelliJ' 카테고리의 다른 글
    • [Intellij] 디버그
    • [Intellij] import문 자동 정리하기
    • [Intellij] 인텔리제이 단축키, 템플릿 정리 - Mac
    • IntelliJ에서 Gradle 사용시 자바 직접 실행
    danuri
    danuri
    IT 관련 정보(컴퓨터 지식, 개발)를 꾸준히 기록하는 블로그입니다.

    티스토리툴바