JUnit 5 Parameterized Tests Guide to JUnit 5 Parameterized Tests를 통해 Parameterized Test를 학습하며 정리한 글입니다. . 테스트 코드는 만들었는데 여러 값으로 테스트를 해보고 싶은 적이 있지 않은가?! 😯 코드가 중복되는 건 싫은데.. . 그렇다면 Parameterized Test를 사용해볼 때이다.🕵 Parameterized Test는 서로 다른 인수로 동일한 테스트를 여러 번 실행해볼 수 있는 유용한 기능이다. 일반 테스트와 다른 점은 @ParameterizedTest를 사용하는 것과 @ValueSource에 인수를 정의해주는 것뿐! Dependencies pom.xml org.junit.jupiter junit-jupiter-par..
Java Code Conventions 코드를 작성하면서 대부분 이런 고민을 해보았을 것이다. "여기를 띄어 써야 깔끔할까?", "여기는 줄 바꿈을 해야 깔끔할까?" 등등.. 맞춤법이 틀린 것 처럼 코드가 찝찝하게 느껴진 적이 있지 않은가!! . 그렇다면.. 코우드 컨붼션(Code Conventions)이 필요한 때이다. ✏✏✏ . Google Java Style Guide 를 읽어보면서 참고할만한 내용만 간략하게 정리해 보았다. 캠퍼스 핵데이 Java 코딩 컨벤션 도 참고해보면 좋을 듯하다. . 추가로 Code Convention에 참고가 될만한 Clean Code 내용들을 간략하게 남겨보았다. Source File 모든 소스 파일은 UTF-8로 인코딩하기 Unix는 새 줄 문자를 LF(Line Fee..
Introduction to AssertJ dependencies dependencies { testImplementation "org.junit.jupiter:junit-jupiter" testImplementation "org.assertj:assertj-core" } single static import를 통해 test class를 쉽게 추가할 수 있다. import static org.assertj.core.api.Assertions.*; 참고로, assertThat() 메서드만으로는 아무것도 증명할 수 없다. 증명의 대상을 설정하는 정도로 생각하면 좋을 것 같다. assertThat(anything); Object isEqualTo() 메서드는 객체의 참조를 비교한다. 따라서, 객체의 필드를 비..
Java Quartz Scheduler Java의 Scheduling Library를 활용해서 일정 시간마다 코드를 실행시켜보자. Quartz Quartz는 다중 Thread Architecture기반 Thread 환경 관리를 위해 ThreadPool 에 의존 주요 Interface Scheduler – scheduler 와 상호작용하는 기본 API Job – 실제 작업을 수행하는 개체 JobDetail – Job instances 정의에 사용 Trigger – 주어진 작업(Job)이 수행될 조건 결정 (특정시간, 횟수, 반복주기 등) JobBuilder – Job의 instances 정의하는 JobDetail instances 빌드에 사용 TriggerBuilder – Trigger instances ..
Java Write a text file Files Paths.get() 결과 파일 저장 경로 주어진 URI를 Path 객체로 변환 public static Path get(URI uri) Files.deleteIfExists() 해당 경로에 파일이 존재할 경우 삭제 public static boolean deleteIfExists(Path path) throws IOException Files.write() 파일에 텍스트 작성 (각 줄은 char sequence) 줄 구분 기호로 끝나는 각 줄을 사용하여 파일에 순서대로 기록 문자는 지정된 문자 집합을 사용하여 바이트로 인코딩 public static Path write(Path path, Iterable
Java MultiThreading AtomicInteger Integer 자료형을 가지고 있는 wrapping 클래스 멀티쓰레드 환경에서 동시성을 보장 (synchronized 보다 적은 비용으로 동시성을 보장) Reference https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html https://codechacha.com/ko/java-atomic-integer/ LinkedBlockingQueue 한정된 메모리 사용을 위해 초기 Queue Size 세팅 Queue Data(empty/full) 상태에 따라 Thread가 Blocking 할 수 있는 기능 제공 Queue에서 아이템을 가져올 때 비..
JavaMail API Add Dependency pom.xml com.sun.mail javax.mail 1.6.2 build.gradle implementation group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2' Set Gmail SMTP Gmail IMAP 액세스 설정{:target="_blank"} 앱 허용 보안 수준 설정{:target="_blank"} 구글 내계정 -> 보안 -> 보안 수준이 낮은 앱의 엑세스 허용 보안 수준이 낮은 앱의 엑세스를 허용하지 않으면 아래 Exception 발생 javax.mail.AuthenticationFailedException: ... Username and Password not accepted. ..
| Lambda Expressions Lambda Expression 을 사용하면 단일 메서드 클래스의 인스턴스를 보다 간결하게 표현할 수 있다. // 단일 매개 변수 parameter -> expression // 둘 이상의 매개 변수 (parameter1, parameter2) -> expression // 반환 사용 (parameter1, parameter2) -> { code } | Lambda Expressions 이상적인 사용 사례 > Person Class public class Person { public enum Sex { MALE, FEMALE } String name; LocalDate birthday; Sex gender; String emailAddress; public int g..