전체 글
-
테스트 순서테스트/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..
-
태깅과 필터링테스트/Junit5 2021. 2. 2. 15:59
테스트 태깅이란 테스트 그룹을 만들고 원하는 테스트 그룹만 테스트를 실행할 수 있는 방법이다. 즉 어떤 테스트는 단위 테스트인지, 통합 테스트인지 구분하거나 실행시간 등 여러가지 조건을 생각해서 실행한 테스트 그룹에 태그를 붙일 수 있다. @Tag 에너테이션을 사용하여 태스트를 그룹화 시킬 수 있다. 하나의 테스트 메소드에 여러 태그도 사용 가능하다. 이 글에서 태깅과 필터링 하는 방법을 Intellij, maven build 두 가지로 설명하고자 한다. 예제1. Intellij에서 태깅및 필터링 @DisplayName("스터디 클레스") class StudyTest { @Test @DisplayName("스터디 만들기☺️") @Tag("fast") //로컬환경에서 void create_new_study..
-
조건에 따라 테스트 실행하기테스트/Junit5 2021. 2. 2. 14:27
특정한 운영체제의 환경변수, 환경에 따라 테스트를 실행하는 여부를 지정할 수 있다. 특정한 환경에서 조건을 검사하는 메서드와 어노테이션은 다음과 같다. 메서드 패키지명 : org.junit.jupiter.api.Assumptions.* 메서드: assumeTrue(조건), asummingThat(조건,테스트), assumeThat(조건, 테스트) 조건이 만족하면 다음 테스트코드나, 메서드 매개변수로 작성한 테스트코드를 실행한다. -> 말로하면 어려우니 예제코드를 보자. 어노테이션 @Enabled @Disabled onOS OnJre IfEnvironmentVariable 예제 코드를 보면서 이해해보자. 예제코드1. 환경변수 설정후 테스트하기 본인은 맥OS를 사용하기 때문에 IntelliJ IDE 터미널 ..
-
Assertion API테스트/Junit5 2021. 1. 28. 15:09
Assertion API는 테스를 실행할 때, 여러 상황을 검사하기 위해 사용된다. Assertion을 사용하기 위해선 다음과 같이 import문을 추가해야 한다. import static org.junit.jupiter.api.Assertions.*; 자주 사용되는 메서드 assertEquals(기대값, 실제값, 메세지) 실제 값이 기대한 값과 같은지 확인한다. 거짓인 경우 메세지를 출력한다. assertNotNull(값) 값이 null이 아닌지 확인한다. assertTrue(boolean) 값이 참인지 확인한다. assertAll(executables) 매개변수를 모두 확인하는 구문 assertThrows(expectedType, executable) 예외 발생 확인 assertTimeout(dura..