전체 글
-
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..
-
Multi-Thread ProgrammingBackEnd/Java 2022. 1. 23. 03:13
Concurrent Software란 동시에 여러 작업을 할 수 있는 Software를 말합니다. Java에서 지원하는 Concurrent Progmming은 멀티프로세싱 (ProcessBuilder)과 멀티쓰레드가 있습니다. Multi-Thread Progmming 생성 방식 1. Thread 상속 public class MultiThread { public static void main(String[] args) { // 코드 상으로는 Thread-0 출력 이후 main이 출력되어야 하지만, 멀티쓰레드는 동시에 수행되기에 출력 순서를 보장하지 않습니다. MyThread myThread = new MyThread(); myThread.start(); System.out.println(Thread.cur..
-
Java8. Date-Time APIBackEnd/Java 2022. 1. 22. 15:19
기존 java.util.Date 클래스의 경우 mutable(값을 변경할 수 있다.)하기 때문에 thread safe하지 않았습니다. 또한, 클래스 이름이 명확하지 않고(Date인데 Time까지 다룬다.), 버그가 발생할 여지가 많았습니다(타입 안정성이 없고, 월이 0부터 시작한다.). 이로 인해 날짜 시간 처리가 복잡한 애플리케이션에서는 보통 Joda Time을 사용했습니다. Java8에서 제공하는 Date-Time API는 JSR-310 Spec.의 구현체를 제공합니다. Date-Time Design Principles Clear: API가 명확해야 합니다. Fluent: 코드가 읽기 쉽고, 메서드 호출을 연결할 수 있습니다. Immutable: 기존의 인스턴스는 변경할 수 없고, 새로운 인스턴스를 ..