전체 글
-
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, ..
-
Java8. CompletableFutureBackEnd/Java 2022. 1. 23. 22:20
CompletableFuture는 자바에서 비동기(Asynchronous) 프로그래밍을 가능하게 하는 인터페이스입니다. Future를 사용해서도 어느정도는 가능했지만 다음과 같은 문제점이 있었습니다. Future를 외부에서 완료 시킬 수 없다. 취소하거나 get()에 타임아웃을 설정할 수는 있다. 블로킹 코드(get())를 사용하지 않고서는 작업이 끝났을 때 콜백을 실행할 수 없다. 여러 Future를 조합할 수 없다. 예외 처리용 API를 제공하지 앟는다. CompletableFuture API runAsync(): 비동기로 작업을 실행합니다. (리턴 값이 없는 경우) supplyAsync(): 비동기로 작업을 실행합니다. (리턴 값이 있는 경우) 원하는 Executor(ThreadPool)를 사용해서..
-
Callable과 FutureBackEnd/Java 2022. 1. 23. 04:40
Callable Runnable과 유사하지만 작업의 결과를 받을 수 있습니다. Future 비동기 작업의 현재 상태를 조회하거나 결과를 가져올 수 있습니다. 주요 API get(): 결과를 가져옵니다. 블록킹 콜(작업이 완료될 때까지 기다립니다.)이며, 타임아웃을 설정할 수 있습니다. isDone(): 작업 상태를 확인합니다. 완료 시 ture 아니면 false를 리턴합니다. cancel(): 취소 시 true 아니면 false를 리턴합니다. parameter로 ture를 전달하면 현재 진행중인 쓰레드를 interrupt합니다. import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.u..