본문 바로가기

Java22

테스트 코드에선 LocalDate.now()를 쓰지말자. 여러 사람의 코드를 볼때 가끔 테스트 코드에서 LocalDate.now() 를 사용하는걸 종종 보게 됩니다. 아무래도 편하게 작성할 수 있다보니 사용된것 같지만, 이는 좋은 패턴이 아닙니다. 그래서 예제로 테스트 코드에서 LocalDate.now()를 쓰면 안되는 이유를 소개하겠습니다. 예제 예를 들어 다음과 같은 코드가 있다고 가정합니다. 배송 예정일을 구합니다. 배송 예정일은 주문일 +3 영업일입니다. 즉, 월요일에 주문했다면 +3일인 목요일을, 목요일에 주문 했다면 금/월/화로 되어 화요일이 배송 예정일이 됩니다. 주말외에 공휴일 판단을 위해 공휴일 여부 판단 엔티티가 존재합니다. 위 조건을 만족하는 2개의 엔티티 클래스들입니다. 첫번째는 공휴일 여부를 가지는 엔티티입니다. @Getter @NoAr.. 2019. 5. 3.
일급 컬렉션 (First Class Collection)의 소개와 써야할 이유 최근 클린코드 & TDD 강의의 리뷰어로 참가하면서 많은 분들이 공통적으로 어려워 하는 개념 한가지를 발견하게 되었습니다. 바로 일급 컬렉션인데요. 왜 객체지향적으로, 리팩토링하기 쉬운 코드로 갈려면 일급 컬렉션이 필요한지에 대해 많은 분들이 공감하지 못하는걸 보게 되었습니다. 그래서 이번 시간에는 일급 컬렉션 (First Class Collection) 이 무엇인지, 어떤 장점들이 있는지에 대해 소개드립니다. 일급 컬렉션이란 단어는 소트웍스 앤솔로지 의 객체지향 생활체조 파트에서 언급이 되었습니다. 규칙 8: 일급 콜렉션 사용 이 규칙의 적용은 간단하다. 콜렉션을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. 각 콜렉션은 그 자체로 포장돼 있으므로 이제 콜렉션과 관련된 동작은 근거지가 마련된셈.. 2019. 4. 1.
패스트캠퍼스 자바 웹 프로그래밍 CAMP 정리 2016.07 ~ 2016.08 진행 자바지기(박재성)님의 패스트캠퍼스 자바 웹 프로그래밍 CAMP 강의 내용 정리 광고 아니라 진심으로 150만원 상당의 수강료가 아깝지 않은 명품 강의였다.참고로 현재 박재성님은 코드스쿼드에서 교육하신다. 1일차 - TDD 시작 일반적인 main()을 이용한 테스트 방식의 문제점 이클립스에서 Junit 사용법 (난 중간중간 인텔리제이로 검색해서 적용함) @Before 사용하는 이유 : 각 테스트들간의 고유한 객체를 생성해주기 위해 선 테스트코드 작성후 실제 코드 개발 구현 -> 테스트 -> 리펙토링 과정으로 진행 테스트 메소드는 production 코드에서 exception을 던질수 있기 때문에 웬만하면 throws Exception을 추가하는게 좋다 private 메.. 2018. 6. 3.
[Java8] 메소드를 파라미터로 전달하기 안녕하세요? 이번 시간엔 java8에 새로 추가된 기능 중 메소드 파라미터에 대해 다시 정리해볼 예정입니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 예제 여기에서는 간단한 프로그램을 기존 자바 코드로 해결하면서 발생하는 문제를 자바8에서 어떻게 개선할 수 있는지 비교해볼 예정입니다. 단, 람다식/스트림 등등의 자세한 내용은 다음 포스팅에 포함될 예정입니다. 여기선 자바8의 변화로 메소드를 파라미터로 넘기는 이유와 장점에 대해 소개할 예정입니다. 과일 재고 프로그램 예를 들어 과일 재고 목록을 관리하는 어플리케이션을 만든다고 가정하.. 2017. 10. 9.
JUnit 만들어보기 안녕하세요? 이번 시간엔 JUnit을 직접 만들어보는 시간을 가지려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 계기 긴 추석연휴 기간동안 미뤄둔 포스팅 예정 글들을 정리했습니다. 3개를 연달아 처리하고 뭐가 더 남았나 에버노트를 보다가 아주 예전에 메모해놓은 일감이 있었습니다. 바로 나만의 XUnit 만들기입니다. 토비님께서 올리신 글을 보고 일감 등록을 했었던 기억이 떠올랐습니다. (원분 : 페이스북링크) 일단 회사에서 사용하는 기술들을 익히기에 급급해 계속 미루다가 이제야 다시 봤습니다. 장기간 휴식이 또 언제 생길지 .. 2017. 10. 7.
SpringBoot 환경에서 Spock 사용하기 안녕하세요? 저번시간에 이어 Spring Boot & Spock 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 2. SpringBoot + Spock 실제 SpringBoot 환경에서 Spock을 어떻게 사용할지에 대해 소개드리겠습니다. Spock은 모든 Spring Boot 테스트 코드를 JUnit과 거의 흡사하게 사용할 수 있어 아주 쉽게 적용할 수 있습니다. 기본적인 사용법부터 하나씩 진행하겠습니다. 2-1. 기본 사용법 스프링 컨텍스트를 호출하여 검증하는 간단한 테스트 코드를 작성해보겠습니다. Bean.. 2017. 10. 1.