#java코드 커버리지(Code Coverage)가 뭔가요?팀 프로젝트 요구 사항 우아한테크코스에서는 레벨 3,4 과정에서 팀 프로젝트를 진행하였다. 레벨 3에서 서비스를 구현했다면, 레벨 4에서는 구현한 서비스에 대한 유지보수를 진행하였는데, 이때 유지보수와 더불어 서비스의 개선을 위한 몇 가지 요구 사항…
#springMockito와 BDDMockito는 뭐가 다를까?해당 게시글은 JUnit5.x를 기준으로 작성되었습니다. 우아한테크코스 레벨2 미션 중에 의문이 생긴 적이 있었다. 테스트 코드를 작성하려는데 어떤 부분에서는 mock 객체를 을 통해 사용하고, 어떤 부분에서는 을 통해 사용하는 것이었다. impor…
#test-doubleTest Double을 알아보자테스트 더블(Test Double)이란? xUnit Test Patterns의 저자인 제라드 메스자로스(Gerard Meszaros)가 만든 용어로 테스트를 진행하기 어려운 경우 이를 대신해 테스트를 진행할 수 있도록 만들어주는 객체를 말한다. 영화…
#javaJava의 문자열을 파해치자!문자와 문자열 자바 프로그램이 실행되는 동안 가장 많이 생성되는 객체가 무엇인지 아는가? 그것은 바로 문자열(String) 객체이다. 문자열은 문자의 배열이다. “abc”라는 문자열은 ‘a’,‘b’,‘c’라는 문자를 나열한 배열인 것이다. 자바는 객…
#oop사용성을 고려해 객체를 설계하자과도한 코드 분리에 대한 피드백 지하철 노선도를 만드는 미션을 수행하면서 다양한 리뷰를 받았다. 그 중에서 리뷰가 아니었다면 생각하지 못했을 부분을 소개해보고자 한다. 미션 요구사항 중 출발역에서 도착역으로 가는 경로를 구할 때 기준을 최단 거리, …
#object-calisthenicelse 예약어를 쓰지 않는다The ThoughtWorks Anthology의 더 나은 소프트웨어를 향한 9단계: 객체지향 생활 체조 중 규칙 2에 대한 내용이다. 시작은 프리코스부터 필자는 현재 우아한 테크코스(이하 우테코)를 진행하고 있는데 우테코를 들어오기 위한 과정 중 …
#spring왜 Constructor Injection을 사용해야 하는가?Spring의 DI, 그리고 IoC 글의 본문을 들어가기 이전에 글에서 주로 언급하게 될 DI의 개념에 대해 짚어보고 가겠다. DI는 Dependency Injection, 말 그대로 의존성 주입을 말한다. 이는 객체 간의 의존성을 외부에서 주입하여…
#cache반복적으로 사용되는 인스턴스 캐싱하기캐싱(Caching)이란 캐싱을 알아보기 전에 캐시의 사전적인 정의를 알아보자. 캐시(cache)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경…