Develop/Java

Develop/Java

[Java/Spring] DIP 활용해서 Testability 높이기

개요 최근 참여한 테스트 코드 스터디에서 테스트과 관련된 좋은 인사이트를 많이 얻었다. 평소 테스트가 어려웠는데, 스터디 이후 조금은 재밌다는 생각이 들었다. 스터디에서 배운 점들을 정리하고 복습하고자 포스팅을 작성해본다 ✅ 인프런의 Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트를 학습하며 정리한 포스팅입니다! 왜 테스트 코드를 짜야 하는가?✅  인수 테스트의 한계우리는 보통 내가 만든 코드가 의도대로 잘 돌아가는지 검증하는 목표로 테스트 코드를 짠다. 그러다보니 흔히 이런 생각을 하곤 한다.굳이 테스트 코드를 안짜도, 직접 실행해서 이것저것 눌러보면 충분히 테스트 한 게 아닐까? 예를 들어 REST API를 만든다고 가정할 때, 굳이 테스트 코드를 짜지 않고도 Postman이나 Swa..

Develop/Java

[Java] equals()와 hashCode()를 털어보자 (feat. 동일성 vs 동등성)

개요 지난번 포스팅에서 ==와 equals()에 대해 알아봤다. Object.equals()의 java document를 보면 아래와 같은 내용이 있다. Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes. equals()를 오버라이딩 할 때마다 hashCode()도 함께 재정의하는 것을 권장하고 있다. equals()는 언제 오버라이딩 되어야 하는지, ..

Develop/Java

[Java] 참조 타입에 ==을 쓰면 안되는 이유 (feat. String Pool, Integer cache)

개요 Java를 이용해 어플리케이션을 만들어봤다면, 아마 equals()나 ==를 한 번쯤은 사용해봤을 거다. 말 그대로 두 대상이 같은지 다른지를 판단해주는 친구들인데, 이전에 이 두 개를 잘못 사용하여 런타임 에러가 발생한 적이 있다 😇 equals()와 ==이 무엇이고 내부 동작 원리는 무엇인지, 어떤때 어느 것을 사용해야 하는지 알아보자. Java에서 동등성을 판단하는 두 가지 방법 == (등가 비교 연산자) 비교 연산자는 두 피연산자를 비교하는 데 사용되는 연산자이다. 이 중 두 피연산자의 값이 같은지 또는 다른지를 비교하는 연산자가 등가 비교 연산자로, Java는 !=와 ==를 제공하고 있다. 비교 연산자 연산 결과 == 두 값이 같으면 true 다르면 false != 두 값이 다르면 true..

Develop/Java

[Java] 맥북에서 자바 버전 여러 개 돌려쓰기

 문제 22년 11월 말에 정식 출시된 Spring Boot 3 (Spring framework 6)은 Java 17 이상에서만 실행 가능하다. 자바 버전이 17 밑이라면 아예 사용조차 할 수 없다니, 제일 보편적으로 쓰이는 자바 버전이 8, 11인 것을 생각하면 꽤 파격적인 내용인 것 같다 🤔 하나의 자바 버전만 사용한다면 아무 문제 없겠지만, 만약 다른 자바 버전을 사용하는 여러 프로젝트를 동시에 진행 중이라면 꽤 골치 아파진다. 보통 우리는 편의를 위해 환경 변수를 이용해 자바 설치 경로를 할당한다. 매번 자바가 설치된 경로로 이동하기엔 번거로우니, 내 컴퓨터의 어느 경로에서 실행하더라도 커맨드 라인이 자바가 설치된 경로를 알아서 찾도록 설정해주는 방식이다. 이 과정에서 컴퓨터에 자바가 버전 별로..

스껄한우디
'Develop/Java' 카테고리의 글 목록