BackEnd
-
JUnit 5. 테스트 순서BackEnd/JUnit 2022. 2. 3. 18:15
테스트 인스턴스를 테스트마다 새롭게 생성하기 때문에 테스트 메소드들의 실행 순서는 보장되지 않습니다. 경우에 따라 특정 순서대로 테스트를 실행하고 싶을 때가 존재합니다. 그런 경우 @TestInstance(Lifecycle.PER_CLASS)와 함께 @TestMethodOrder를 사용할 수 있습니다. OrderAnnotation은 낮은 값일수록 높은 우선순위를 갖습니다. package com.java.JUnit5; import org.junit.jupiter.api.*; @TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class OrderTests { int..
-
JUnit 5. 테스트 인스턴스BackEnd/JUnit 2022. 2. 3. 17:50
JUnit은 기본 전략으로 테스트 메소드마다 테스트 인스턴스를 새로 만듭니다. 테스트간 의존성을 없애고 독립적으로 실행하여 예상치 못한 부작용을 방지하기 위함입니다. 아래 코드에서 value 값을 증가시키기 때문에 1, 2, 3이 출력되어야 할 것 같지만 결과는 모두 1이 출력됩니다. package com.java.JUnit5; import org.junit.jupiter.api.Test; public class InstanceTests { int value = 1; @Test void printOne() { System.out.println(value++); // [결과]: 1 } @Test void printTwo() { System.out.println(value++); // [결과]: 1 } @T..
-
JUnit 5. 반복문BackEnd/JUnit 2022. 2. 3. 17:31
@RepeatedTest 반복 횟수와 반복 테스트 이름을 설정할 수 있으며, RepetitionInfo 타입의 인자를 받을 수 있습니다. @RepeatedTest 애노테이션 안에 value는 반복 횟수를, name은 테스트 이름입니다. 테스트 이름 지정 시 아래와 같이 placeholder를 지정할 수 있습니다. @DisplayName("반복") @RepeatedTest(value = 10, name = "{displayName}, {currentRepetition}/{totalRepetitions}") void repeatTest(RepetitionInfo repetitionInfo) { System.out.println("test " + repetitionInfo.getCurrentRepetition..
-
JUnit 5. TagBackEnd/JUnit 2022. 1. 31. 12:25
Tag는 테스트 그룹을 만들고 원하는 테스트 그룹만 실행할 수 있습니다. @Tag 애노테이션을 사용하며 테스트 메소드에 추가하여 사용합니다. 하나의 테스트 메소드에 여러 태그를 사용할 수 있습니다. package com.java.JUnit5; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; public class TagTests { @Test @Tag("local") void tagLocalTest() { System.out.println("local"); } @Test @Tag("testci") void tagTestCiTest() { System.out.println("testci"); } } IntelliJ에서 특정 태그로 ..
-
JUnit 5. 조건문BackEnd/JUnit 2022. 1. 31. 11:47
Assumptions는 테스트 메소드가 특정 조건에 대해서만 실행하고자 할 때 사용합니다. assumeTrue(조건) asuumeFalse(조건) assumingThat(조건, 테스트) @Enabled___ 와 @Disabled___ 는 특정 환경에 대해서만 테스트를 실행하고자 할 때 사용합니다. OnOS: 특정 OS 에서만 실행합니다. OnJre: 특정 Jre 버전에서만 실행합니다. IfEnvironmentVariable: 특정 환경변수 값에서만 실행합니다. package com.java.JUnit5; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.*; import static org.junit.jupiter.api...
-
JUnit 5. AssertionBackEnd/JUnit 2022. 1. 30. 17:05
import static org.junit.jupiter.api.Assertions.*; assertEqulas(expected, actual): 실제 값과 기대한 값이 같은지 확인합니다. assertNotNull(actual): 값이 null이 아닌지 확인합니다. assertTrue(boolean): 조건이 참(true)인지 확인합니다. assertAll(executables...): 모든 구문을 확인합니다. (기본적으로 예외 발생 시 더이상 실행이 되지 않습니다.) assertThrows(expectedType, executable): 예외가 발생되었는지 확인합니다. assertTimeout(duration, executable): 특정 시간 안에 실행이 완료되었는지 확인합니다. package com..
-
JUnit 5BackEnd/JUnit 2022. 1. 30. 16:01
Junit이란 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크입니다. Spring Boot 2.2부터 JUnit 5 Jupiter가 적용되었습니다. JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform: 테스트를 실행해주는 런처를 제공합니다. (TestEngine API 제공) JUnit Jupiter: TestEngine API 구현체로 JUnit 5를 제공합니다. JUnit Vintage: JUnit4와 3를 지원하는 TestEngine 구현체입니다. 의존성 추가 Spring Boot 2.2 버전 이상의 프로젝트를 생성한다면 기본적으로 JUnit 5 의존성이 추가됩니다. 스프링 부트 프로젝트를 사용하지 않을 경우 아래 의존..
-
Java8. parallelSortBackEnd/Java 2022. 1. 25. 22:44
Arrays.parallelSort(): Fort/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공합니다. 병렬 정렬 알고리즘은 배열을 둘로 계속 쪼개고 합치면서 정렬합니다. import java.util.Arrays; import java.util.Random; import java.util.stream.IntStream; public class ParallelSortClass { public static void main(String[] args) { // 정렬하는 배열의 크기에 따라 결과는 달라질 수 있습니다. int size = 1500; int[] numbers = new int[size]; Random random = new Random(); IntStream.range(0, ..