Junit5

  • Java
  • 2021년 1월 25일

자바 프로그래밍용 Unit 테스트 프레임워크

런타임시 Java 8이상이 필요하며 컴파일 타임시에 JAR로서 링크된다.

Spring Boot를 이용하면 내부에 dependency가 포함되어 있다.


1. 구조

  • JUnit Platform : 테스트를 발견하고 계획을 생성하는 TestEngine 인터페이스를 갖고 있다.

    이를 통해 테스트를 발견,실행,보고한다.

  • JUnit Jupiter : TestEngine의 실제 구현체는 별도 모듈중 하나로 Juptier-API를 이용한 테스트 코드를 발견하고 실행

    Jupiter API는 JUnit5에 새롭게 추가된 테스트 코드용 API

  • JUnit Vintage : 기존 버전으로 작성한 테스트 코드를 실행할때 이 모듈을 이용



2. Assertion

Assertion은 기본적인것만 제공하기 때문에 AssertJ와 같은 것들을 추가로 사용할 수도 있다.

  • assertThat / assertTrue : 전제조건 검증
  • assertAll() : 전체 실행
  • assertThrows/assertDoesNotThrow() : 예외상태 검증
  • assertTimeout() : 타



3. 어노테이션

1) @Ignore

테스트로 안쓰이는 클래스

테스트내 중복 코드제거를 위해 클래스 상속을 이용하여 만들때 사용해주어야한다.

2) @Test

테스트 메서드 임을 알리는 어노테이션

3) @ParameterizedTest

매개 변수화 된 테스트

4) @TestFactory

동적 테스트를 위한 테스트 팩토리

5) @DisplayName

해당 테스트 클래스 or 메서드의 console에 보여지는 이름을 정의

6) @DisplayNameGenration

테스트 클래스에 대해 사용자 정의 이름을 선언

7) @Disabled

테스트 클래스 or 메서드를 비활성화

8) @BeforeEach / @BeforeAll

@Test, @RepeatedTest, @Parameterized, @TestFactory가 붙은 메서드 전에 실행되는 테스트

9) @AfterEach / @AfterAll

@Test, @RepeatedTest, @Parameterized, @TestFactory가 붙은 메서드 후에 실행되는 테스트

10) @Nested

테스트 클래스안에서 내부 클레스를 정의

11) @Repeated Test

반복 테스트를 위한 테스트 템플릿임을 알림

12) @Tag

필터링을 위한 태그

13) @TestInstance(TestInstance.LifeCycle.PER_CLASS)

테스트 메서드간의 상태를 유지해주는 어노테이션

14) @TestMethodOrder(MethodOrderer.OrderAnnotation.class)

  • @Order() : 메서드간 순서를 지정해줄 수 있따.




Refernce

https://reiphiel.tistory.com/entry/junit5-features

Tags :

Related Posts

도메인 주도 설계로 시작하는 마이크로 서비스 개발

도메인 주도 설계로 시작하는 마이크로 서비스 개발

  • Books
  • 2021년 12월 27일

1. 마이크로서비스를 위한 조건 1) 업무 기능 중심의 팀 기술별로 팀이 나눠지게 되면 서비스 한개를 개발하는데 많은 의사소통이 필요하고 의사결정이 느려진다. 업무기능을 중심으로 다양한 기술을 가진 사람들이 하나의 팀이 되어 서비스를 만들어야 한다. 2) 폴리글랏 프로그래밍 각각의 서비스에 맞는 효율적인 방법론과 도구, 기술을 찾아 적용. 3) 개발 생명주기...

Read More
클래스

클래스

  • Java
  • 2021년 2월 1일

객체 지향의 중심 객체를 정의하는 일종의 틀 같은 것으로 상태(변수) / 행동(메서드)이 있을 수 있다. 이로 인해 추상화, 캡슐화, 상속, 다형성 등을 가능하게 하여 개발 / 유지보수를 쉽게 해준다. 1. 클래스 정의하는 방법 class키워드를 통해 클래스를 새로 정의할 수 있다. class Fruit{ private String name; Fruit(String name){this.name = name;} public String getName(){ return name; } } 1) 필드 변수를 뜻하며 두가지 종류가 존...

Read More
인터페이스

인터페이스

  • Java
  • 2021년 12월 8일

1. 인터페이스란? 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 유지보수를 용이하게 하기 위함 다형성? 동일한 메시지를 수신했을 때 객체의 타입에 따라 다르게 응답할 수 있는 능력 1) 추상클래스와 인터페이스 차이 추상메서드를 가짐으로써 다형성을 극대화하면서 어떤 역할을 구현하는 방법(객체들이 따라야 하는 책임의 집합을 서술한 것)이라는 공통...

Read More