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

Sorting Algorithm

Sorting Algorithm

1. 종류 선택 정렬 ( Selection Sort ) 삽입 정렬 ( Insertion Sort ) 버블 정렬 ( Bubble Sort ) 셸 정렬 ( Shell Sort ) 퀵 정렬 ( Quick Sort ) 힙 정렬 ( Heap Sort ) 합병 정렬 ( Merge Sort ) 기수 정렬 ( Radix Sort ) 계수(카운트) 정렬 ( Count Sort ) 트리 정렬 큐브 정렬 팀 정렬 2. 시간 복잡도 ( Big-O ) 알고리즘 최선 평균 최악 선택 정렬 Ω(n^2) Θ(n^2) O(n^2) 버블 정렬 Ω(n) Θ(n^2) O(n^2) 삽입 정렬 Ω(n) Θ(n^2) O(n^2) 트리 정렬 Ω(nlogn) Θ(nlogn) O(n^2) 퀵 정렬 Ω(nlogn) Θ(nlogn) O(n^2) 셸 정렬 Ω(n) Θ(n^1.5) O(n^1.5) 힙 정렬 Ω(nlogn) Θ(nlogn) O(nlogn) 합병 정렬 Ω(nlogn) Θ(nlogn) O(nlogn) 큐브 정렬 Ω(n) Θ(nlogn) O(nlogn) 팀 정렬 Ω(n) Θ(nlogn) O(nlogn) 기수 정렬 Ω(nk) Θ(nk) O(nk) 계수 정렬 Ω(n+k) Θ(n+k) O(n+k) 3. 공간 복잡도 ( Big-O ) 알고리즘 최악 선택 정렬 O(1) 버블 정렬 O(1) 삽입 정렬 O(1) 셸 정렬 O(1) 힙 정렬 O(1) 퀵 정렬 O(logn) 합병 정렬 O(n) 큐브 정렬 O(n) 트리 정렬 O(n) 팀 정렬 O(n) 계수 정렬 O(k) 기수 정렬 O(n+k) 4. 정렬의 특성 1) 안정 정렬( stable sort ) 정렬되지 않은 상태의 같은 키값을 가진 원소의 순서가 정렬 후에도 유지 되는 정렬 상황에 따라서 객체나 키값이 여러개인 값들을 정렬 하려고 할때 원래의 순서가 바뀌게 되면 안될 수 있기 때문에 그때는 stable한 sort를 이용해야 한다. Bubble, Insertion, Merge, Counting, Bucket, Radix Sort가 해당된다. Note...

Read More
최장 증가 수열

최장 증가 수열

주어진 수열에서 오름차순으로 정렬된 가장 긴 부분 수열이다. 예를 들어, 341256784134라는 수열에서 LIS는 345678 or 125678 이 된다. 1. 찾는 방법 LIS의 크기 구하는 방법은 dp와 이분탐색에 따라 방법이 나뉘며 경로 추적(trace) 방법은 두 방법 모두 인덱스를 가리키는 배열을 하나 추가하여, 탐색하면서 해당 값의 앞의 수열 인덱스를 저장하는 방법으로 구현한다....

Read More
[APSP] Floyd Warshall 알고리즘

[APSP] Floyd Warshall 알고리즘

벨만-포드 알고리즘과 다익스트라 알고리즘과 달리 모든 최단 경로를 구하는 알고리즘이다. (물론 두 알고리즘도 모든 정점에대해 수행하면 모든 최단 경로를 구할 수 있다.) 1. 특징 음의 가중치 허용 optimal substructure 개념 이용 배열을 이용하여 구현 밀집그래프에서 모든 edge간 경로 구할때 적합 2. Pesudo Code 3. 구현 방법 그래프 edge가 주어졌을때, edge들의 정보를 이용하여 각 edge간 거리 정보를 저장할 distance 2차원 행렬과 경로를 구하기 위해 이전 노드를 저장할 previous 2차원 행렬 생성 distance 행렬은 Infinity로 previous 행렬은 NIL(-1)로 초기화 그래프 G의 edge들의 가중치의 정보를 이용해 distance행렬을 초기화하고 자기의 거리는 0으로 초기화 3중 반복문을 이용하여, 현재까지 계산된 i - j까지의 경로 값보다 사이에 k를 경유하는 경로 값이 더 작다면 값을 바꾸기 4. 시간복잡도 매번 모든 노드들의 조합에 대해서 현재까지의 최단 경로를 구하고 총 |V-1| 번 반복하기 때문에 O(|V|^3) 의 시간복잡도를 갖는다....

Read More