테스트/Junit5
-
Junit5에서 Junit4마이그레이션 하기테스트/Junit5 2021. 2. 8. 17:13
우리가 1장에서 살펴본 Junit5의 구조를 잠깐 생각해보자. 1. Jupiter - TestEngine의 구현체 2. Vintage - Junit4, 3을 지원하는 TestEngine 구현체 3. platform - 테스트를 실행해주는 런처 제공, TestEngine API제공. 본글에선 이 Vintage를 의존성을 추가해 Junit5에서도 Junit4로 작성한 테스트를 실행하고자 한다. [REFERENCES]www.inflearn.com/course/the-java-application-test/dashboard 더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 자바 프로그래밍 언어를 사용하고 있거나 공부하고 있는 학생 또는 개발자라면 반드시 알아야 하는 애플리케이션을 테스트하는 다양한 방법..
-
JUnit5 확장 모델테스트/Junit5 2021. 2. 8. 16:20
만약 테스트 시간이 오래 걸리는 테스트를 찾아 @SlowTest 어노테이션을 붙여주는 Extention모델을 구현한다 가정하자. 이러한 기능을 하는 JavaClass를 구현하고, 테스트 클레스에서 등록해줄 때, 필요한 것은 @ExtendWith 애노테이션이 필요하다. 바로 실습해보자. 예제코드 1. 테스트 시간이 일정시간 지나면 @SlowTest 태깅을 고려해주는 FindSlowTestExtension 구현하기 Exteion 모델을 구현하기 위해서 다음 Interface를 알아둘 필요가 있다. BeforeTestExecutionCallback, AfterTestExecutionCallback 은 다음과 같이 설명되어 있다. [REFERENCES]junit.org/junit5/docs/current/api..
-
properties파일로 JUnit5 설정하기테스트/Junit5 2021. 2. 8. 14:33
우리가 그동안 살펴보았던 @Disabled, 인스턴스 라이프사이클, 테스트 이름 표기 등 Annotation으로 테스트를 제어 해왔지만, 이번 시간에는 properties파일로 테스트를 설정하고자 한다. ※본 글에선 intellij IDE로 실습한다 1. properties파일 생성하기 먼저 테스트 폴더에 resources 디렉토리를 만든후 junit-platform.properties이란 파일을 생성한다. 후에 Project structure -> Module에서 우리가 방금 만든 테스트 폴더를 Test Resources로 Class Path로 경로를 잡아준다. 2. 생성한 properties파일로, 모든 테스트 라이프 사이클을 클레스 인스턴스로 적용하기 생성한 properties 파일에 다음과 같은 ..
-
테스트 순서테스트/Junit5 2021. 2. 6. 19:10
※테스트를 실행할 때 코드에 존재하는 테스트 메소드마다 내부 로직에 의해 순서대로 실행이 된다. 하지만 우리는 이 순서에 의존하면 안된다 -> 순서가 바뀔수도 있기 때문에. 그렇다면 왜 순서를 명확하게 하지 않는가. -> 단위테스트일 경우 각각의 테스트마다 독릭접이기 때문(의존성이 없애기 위해). 하지만 우리는 종종 시나리오 테스트일 경우 순서대로 실행하고 상태정보를 저장하는 테스트가 필요하다 EX)쇼핑몰에서 로직 테스트 회원가입 -> 로그인 -> 상품 -> 주문 -> 결제... 그렇다면 어떻게 순서대로 테스트를 실행할 수 있을까. 방법1. @TestInstance(Lifecycle.PER_CLASS)와 함께 TestMethodOrder사용 TethodOrder구현체 설정 Alphanumeric Orde..
-
테스트 인스턴스테스트/Junit5 2021. 2. 6. 18:29
테스트 메소드마다 테스트 클레스 인스턴스를 새로 만든다. 이것이 JUnit5에서 기본전략이다. Q.왜 인스턴스를 테스트 메소드 마다 만들까? A.테스트 메소드를 독립적으로 실행하여 의존성을 낮춰 예상치 못한 부작용을 막기 위해서이다. 하지만 JUnit5에선 이런 기본전략을 바꿀수 있는 기능이 추가되었다. 그것이 바로 @TestInstance 애노테이션이다. @TestInstace(Lifecycle.PER_CLASS) - 테스트 클래스당 인스턴스를 하나 만들어 사용한다. 예제1. 테스트 메소드별 테스트 인스턴스 확인해보기 @DisplayName("스터디 클레스") class StudyTest { @Test @DisplayName("메서드 1️") void create_new_study_test() { Sy..
-
테스트 반복하기2 @ParameterizedTest이용한 추가 방법테스트/Junit5 2021. 2. 2. 18:08
2021/02/02 - [테스트/Junit5] - 테스트 반복하기 junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests 또한, 사용자가 커스텀화한 클래스 그리고 여러개의 인자값이 존재한다면, 하나로 조합해 하나의 매개변수로 받을 수 있는 방법이 있다. -> @ConverWith를 활용한 SimpleArgumentConverter 이용 -> 커스텀 클래스 생성후 사용한 경우 -> @AggregatwWtih를 활용한 ArgumentsAggregator 인터페이스 구현 -> 인자값 조합을 활욘한 경우. 아래 소스코드를 보면서 각 애노테이션이 어떻게 쓰이는지 이해해보자. 예제코드1. ValueSource에 여러값들 할당하기 @Va..
-
테스트 반복하기테스트/Junit5 2021. 2. 2. 17:09
사용되는 애노테이션 @RepeatedTest 반복횟수와 반복 테스트 이름을 설정할 수 있다. {displayName} {currentRepetition} {totalRepetitions} @ParameterizedTest 테스트에 여러 매개변수를 대입해가며 반복 실행한다. {dispalyName} {index] {arguments} {0},{1} 예제코드1. RepeatedTest애노테이션을 활용한 테스트반복 package com.example.junittest; import org.junit.jupiter.api.*; @DisplayName("스터디 클레스") class StudyTest { @Test @DisplayName("스터디 만들기☺️") @FastTest void create_new_stud..
-
커스텀 태그테스트/Junit5 2021. 2. 2. 16:22
JUnit5 애노테이션을 조합하여 사용자가 커스텀 태그를 만드는 것이 가능하다. 커스텀 애노테이션을 만들때 Junit5 애노테이션을 이용해 기능을 사용할 수 있는데, 이때 Junit5 어노테이션을 메타애노테이션이라 한다. 이제 실습해보자. 이 글이 이해가 안된다면 2021/02/02 - [테스트/Junit5] - 태깅과 필터링 FastTest 애노테이션에서 이 애노테이션은 메타애노테이션 @Tag("fast") //Junit5의 애노테이션 -> FastTest 애노테이션에서 이 애노테이션은 메타애노테이션 public @interface FastTest { } package com.example.junittest; import org.junit.jupiter.api.Tag; import org.junit.j..