프로그래밍 (73) 썸네일형 리스트형 jacoco, lombok 사용시 code coverage 증상 jacoco에서 Lombok의 @Data 주석이 달린 도메인 클래스의 코드 커버리지가 0%로 나오는 경우가 발생하였다. @Entity @Getter @NoArgsConstructor @EqualsAndHashCode(of = "id") public class Product { //... } 해결법 lombok에서 생성한 코드에 @lombok.Generated를 붙이면 되는데 lombok.config을 추가하여 여러가지 설정을 할 수 있도록 하고 있다. lombok.addLombokGeneratedAnnotation = true를 추가하여 롬복에서 생성한 코드에 @lombok.Generated를 추가해주는 설정을 하면 된다. IntelliJ Auto import *처리 방지 증상 IntelliJ에서 자동 import나 Optimize imports를 할 때 개별 클래스가 아니라 와일드카드로 전체가 import 되는 현상이 발생하게 된다. import * 은 좋지 못한 습관이니 이를 방지해보자. 해결법 preferences - Editor - Code Style - java에 가보면 Class count to use import with '*'과 Names count to use static import with '*'의 기본값이 5와 3으로 낮게 잡혀있는 것을 확인할 수 있다. 이값을 999로 크게 늘린 후 확인해보면 import *이 아닌 개별 import가 되는 것을 확인할 수 있다. junit5 @Nested 계층구조로 테스트코드 작성하기 Describe - Context - It 구조 BDD(Behaviour Driven Development)에서 테스트 코드를 작성하는 구조로 구조에 대한 설명은 BETTER SPECS에 자세히 설명이 되어있다. 키워드를 간단히 요약해보면 Describe: 테스트할 대상을 명시 Context: ~하면, ~할 때 같은 상황이나 조건을 명시 It: ~한다와 같은 대상이 해야 할 행동을 명시 내가 생각한 구조의 가장 큰 장점은 테스트를 계층적으로 작성하여 수행 결과를 파악하기 좋다는 점이다. 수행 결과가 보기 좋아서 자신이 놓친 경우를 찾기 쉽다. Junit5의 @Nested Junit5부터 @Nested를 사용하여 계층적으로 테스트 코드를 작성할 수 있다. 우선 @Nested를 사용하지 않고 간단한 계산기 .. 어노테이션 어노테이션 어노테이션이라는 말 자체는 주석이라는 뜻을 가지고 있다. 어노테이션은 JDK1.5부터 사용 가능하며 프로그래밍 언어에 영향을 미치지 않으면서 다른 프로그램에게 유용한 정보를 제공할 수 있다. 흔히 많이 사용하는 대표적인 어노테이션에는 @Override가 있는데 메소드 앞에만 붙일 수 있으며 메소드가 오버라이드 됐는지 검증을 하여 부모 클래스에 해당 메서드가 없다면 컴파일 오류를 발생시킨다. 메타 어노테이션 어노테이션을 정의하는 방법에 앞서 메타 어노테이션이라는것에 대해 알 필요가 있다. 어노테이션을 위한 어노테이션으로 어노테이션을 정의할 때 사용되는 어노테이션이다. @Target 어디에 적용할지를 지정할 때 사용하며 앞서 나왔던 @Override를 보면 메소드에 사용됨을 알 수 있다. 지정할 .. junit5 사용하기 JUnit5란? JUnit은 자바에서 단위테스트를 제공하는 테스트 프레임워크로 테스트를 작성하고 실행할 수 있다. junit5는 공식 문서에서는 3가지의 서브 프로젝트의 모듈로 구성되어있다고 한다. JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage Platform JVM에서 테스트 프레임워크를 시작하기 위한 기초 역활 Jupiter Junit5에서 테스트를 작성과 확장을 위한 새로운 프로그래밍 모델과 확장 모델의 조합 Vintage 하위 버전(JUnit3, JUnit4)을 위한 테스트엔진제공 junit5은 런타임에는 Java 8이상 이 필요하나 이전 버전의 JDK로 컴파일된 코드는 테스트할 수 있다. 테스트 환경 확인 Ide: IntelliJ Idea.. Enum 클래스 Enum 열거형은 JDK1.5부터 추가되었으며 서로 관련 있는 상수를 편하게 선언하기 위해 사용할 수 있다. enum 정의하는 방법 열거형의 정의는 괄호 안에 상수의 이름을 나열하면 된다. enum 열거형이름 {상수명1, 상수명2,...} public enum Fare { BUS, TRAIN, AIRPLANE, SHIP } 사용할 때는 열거형이름.상수명으로 사용하면 된다. Fare.BUS 열거형에 상수값을 사용자가 지정하여 사용하고 싶을 때는 이름 옆에 소괄호를 사용하여 적어주면 되고 값을 저장할 변수와 생성자를 추가해야 한다. enum Fare { BUS(1200), TRAIN(10000), AIRPLANE(30000), SHIP(50000); private final int fare; Fare(int.. 멀티쓰레드 프로그래밍 Thread 클래스와 Runnable 인터페이스 Thread 클래스와 RUnnable인터페이스를 알아보기 전에 프로세스와 쓰레드에 대해 알아보자 프로세스(process) OS로부터 메모리를 할당받아 실행중인 프로그램을 프로세스라고 한다. 프로그램에 사용되는 데이터와 메모리 쓰레드로 구성된다. 쓰레드(thread) 프로세스 내에서 실제로 작업을 수행하는 것으로 모든 프로세스는 하나 이상의 쓰레드를 가진다. 두 개 이상의 쓰레드를 가지는 프로세스는 멀티 쓰레드 프로세스라고 한다. 쓰레드의 구현 자바에서 쓰레드를 구현하는 방법에는 크게 두 가지가 있다. 1. Thread 클래스를 상속받아 구현 public class MyThread extends Thread { public void run() { //작업 S.. 예외처리 예외처리 프로그램이 실행 중 예상하지 못한 상황이 발생하여 오작동을 하거나 종료되는 경우가 있는데 발생하게 된 원인을 오류나 예외라고 한다. 이 둘을 구분해보자 오류(Error) 시스템 레벨에서 발생하며 프로그램 코드에 의해 수습될수 없는 심각한 오류로 프로세스에 영향을 준다. 발생 시점에 따라 컴파일 에러, 런타임 에러, 논리적 에러로 나눌 수 있다. 컴파일 에러: 컴파일 시점에 발생하는 에러 런타임 에러: 실행 시점에 발생하는 에러 논리적 에러: 실행은 되었지만 의도한 바와 다르게 동작하는 에러 예외(Exception) 사용자의 잘못된 사용이나 개발자가 잘못 구현한 로직에 의해 발생되며 코드에 의해 수습될 수 있는 미약한 오류이다. 에러와 다르게 예외는 예외처리를 통해 프로그램이 종료되지 않고 동작하.. 이전 1 2 3 4 5 6 7 ··· 10 다음