테스트 코드 작성 스타일. Classist. Mockist. and Hybrid. 테스트 코드를 작성하다 보면 각자의 스타일에 따라 작성 방식이 달라지게 된다. @Sql 어노테이션을 이용해서 작성한 SQL 스크립트를 테스트 코드 실행에 사용하는 Classist 스타일과 Mock 클래스를 inject 해서 사용하게 되는 Mockist 스타일로 나눌 수 있다. 1. Classist. Class를 있는 그대로 사용해 테스트 하는 스타일을 classist라고 한다. Sql 스크립트를 이용해서 하는 테스트의 경우에는 DB 쿼리 수행 부터 서비스 계층까지 한 번에 테스트 할 수 있다는 장점이 있다. @SpringBootTest class TestClass { @Autowired CalculateService cal..
Java 날짜 API. Date. LocalDate. LocalDateTime. DateTime. Java의 날짜 API는 우여곡절이 많았다. Java 1.0에서 처음 등장한 Date객체는 사용성과 안정성이 매우 떨어지는 API 였다. 때문에 JodaTime과 같은 Open Source 날짜 API가 한동안 사용되 왔다. 그러다 JDK 1.8 버전이 등장하면서 비로소 java.time 패키지가 제공되며 공식적으로 개선된 날짜 API가 릴리즈 되었다. 위와 같은 이유로 기존 레거시 코드에서는 Date를 사용하고 있는 상태가 많다. Date 객체를 LocalDateTime 객체로 서서히 migration 해가야 하는 상황에 있다면, 이들 날짜 API 간에 형변환 해야 하는 상황이 많을 것이다. 그래서 아래에..
결론 java.util.date 클래스와 Calendar 객체 대신. 1.8에서 지원하는 java.time 패키지의 날짜객체들을 사용하는 것이 좋습니다. 기존의 Java 날짜 객체의 문제점 Java 1.0은 날짜와 관련된 Date객체를 함께 출시 했습니다. import java.util.Date; Date now = new Date(); // 2022-12-05 23:35:02. 생성. 그러나 1.0 에서 지원하는 Date 객체는 여러가지 문제점을 가지고 있었습니다. 햇갈리는 생성자 설계 Date객체 생성자의 파라미터들은 순서대로 '연-월-일 시간-분-초'의 값을 갖습니다. 그렇다면 아래와 같이 파라미터를 입력해서 '2022-12-05 23:45:00' 값을 갖는 날짜 객체를 생성할 수 있을까요. Dat..
방법 1. subList 메서드를 이용한 방법. for (int i = 0; i < data.size(); i += 1000) { memberMapper.bulkRegister(data.subList(i, Math.min(i + 1000, data.size()))); } - subList를 활용한 방법은 OOME를 야기 할 수 있다. subList를 활용해서 쪼개진 List를 만들 때 마다 constructor에서 새로운 List를 할당해 주기 때문이다. 방법 2. 단순 반복문으로 매 1000건 마다 insert 해주는 방식. List partedData = new ArrayList(); for (int i = 0; i < data.size(); i++) { partedData.add(data.get(i..
1000개 단위로 리스트를 짜르려면, sublist 와 반복문을 사용한다. https://stackoverflow.com/questions/5824825/efficient-way-to-divide-a-list-into-lists-of-n-size Efficient way to divide a list into lists of n size I have an ArrayList, which I want to divide into smaller List objects of n size, and perform an operation on each. My current method of doing this is implemented with ArrayList objects in Java. Any stackoverf..
포스트맨에서 GET 메서드로 JSON 데이터를 전달하면 응답성공. API는 아래와 같이 GET 방식으로 작성되었음에도 @RequestBody로 json을 잘 받는다. 단, 포스트맨으로 전송시에만. JS단에서 GET 으로 JSON 객체를 전송하면? 받지못하고 아래와 같은 예외를 던진다. 같은 GET방식으로 JSON 데이터를 전송했는데, 포스트맨으로 전송할 때는 spring이 잘 받아들였는데, XMLHttpRequest로 보낼 때는 Required request body is missing 에러 발생. 둘다 header에 content-type으로 application/json을 명시한 상태로 보냈다. Postman이 전송하는 agent는 GET 메서드임에도 불구하고 json을 전송하도록 지원하지만, XML..
- 테스트 코드를 작성하고 테스트를 실행했는데 아래와 같은 에러가 났을때. 1. build.gradle에 아래 구문을 추가해준다. 2. intellij의 아래 설정을 'intellij IDEA' 로 변경해 준다. 그런데 이 방법은 별로 추천 안함. 여럿이서 개발하기 때문, 3. 여기서 문제가 해결되었다. import를 잘못한 것. JUnit5는 org.junit.Test이 아님. org.junit.jupiter.api.test를 import 해야 함. 이렇게 놓치기 쉬운 부분은 좀 더 신경 쓰도록 하자.