본문 바로가기

전체 글144

[Java] Integer 캐시 관련 이번에는 친구가 말해줘서 알게 된 내용입니다. 보시면, 두 값이 128로 같은데 테스트가 실패하는 것을 알 수 있습니다. 반면 127로 했을 경우 성공합니다. 실제로 Integer값이 들어갈 때, 이 valueOf를 이용합니다 high 값은 이렇게 설정되어 있습니다. java를 실행할 때 아무 옵션을 주지 않았다면, 127로 되어 있습니다. 그래서 -128부터 127까지는 캐시에 있는 값을 들고 오고, 아닌 경우에는 새로운 객체를 만듭니다. 즉, -128 부터 127까지는 같은 객체를 재활용하며, 이 이상 범위는 새로운 Integer 객체를 만들어서 반환합니다. 그렇기 때문에, 이런 식으로 테스트를 하게 되면 객체의 주소값을 비교해서 이러한 현상이 나오게 됩니다. 그래서 객체를 비교할 때는 equals(.. 2024. 3. 7.
[Spring] @Value @SpringBootTest 없이 테스트하는 법 이번 주제는 테스트 관련입니다. 스프링에서는 @Value annotation을 통해서 application.properties에서 값을 가져와서 변수에 줄 수 있습니다. 이런 식으로 자주 이용합니다. 그렇다면 이를 테스트 하려면 어떻게 해야 할까요? 이렇게 테스트를 할 수 있습니다. 만약 @SpringBootTest가 없으면 name에 null이 들어갑니다. 하지만 서비스가 커지면, @SpringBootTest를 할 시에 테스트 실행 속도가 느려집니다. 그리고 다른 곳에서 bean을 주입할 때 에러가 생기는 등 이러한 현상이 발생하게 되면 이 테스트는 실패하게 됩니다. 단위 테스트를 하려면 어떻게 해야 할까요? 이런 식으로 할 수 있습니다. 만약 MyService에서 스프링 빈 주입 없이 단위 테스트를 .. 2024. 2. 28.
[Spring] AOP 테스트 이번에 회사에서 AOP에 관한 테스트 코드를 작성하다가 겪은 문제입니다. 로깅을 위해 AOP를 많이 이용합니다. 근데 AOP가 동작하는 지 테스트를 하려면 어떻게 해야 할까요? 이런 코드가 있고, redis에 어떤 값이 들어가거나 꺼낼 때 로깅을 하고 싶다고 가정해보겠습니다. 간단하게만 작성했습니다. AOP를 이용하면 이러한 코드가 나올 것 입니다. 근데 Redis에 관해 어떠한 설정도 없이 AOP가 작동하는 지 테스트하고 싶으면 어떻게 할까요? 저는 처음에 MockBean을 이용하려고 했습니다. 하지만 AOP의 부분은 동작하지 않았습니다. 이렇게 만든 repository가 다른 취급되는 지 궁금해서 한 번 출력해봤습니다. 이렇게 나오는데, 그러면 AOP의 Around 조건에 만족한다고 저는 생각했습니다.. 2023. 12. 21.
[우아한테크 프리코스 6기] 4주차 크리스마스 프로모션 회고 안녕하세요. 3주 차는 건너뛰고 바로 4주 차로 왔습니다. 3주 차를 회고하지 않은 이유는 이전에 회고했던 내용이랑 크게 다르지 않았습니다. 4주 차는 생각보다 많이 어려웠습니다. 기능이 복잡하기보다는, 클래스 설계하고 테스트하기가 어려웠습니다. 과제 내용 간단하게 요약해서 설명드리겠습니다. https://github.com/Danden1/java-christmas-6-Danden1 GitHub - Danden1/java-christmas-6-Danden1 Contribute to Danden1/java-christmas-6-Danden1 development by creating an account on GitHub. github.com 자세한 문제 내용은 이를 참고해 주시면 되겠습니다. 12월에 메뉴.. 2023. 11. 20.
[우아한테크코스 프리코스 6기] 2주차 자동차 회고 작년에 참가했었지만, 2주 차는 다른 문제였습니다. https://github.com/Danden1/java-racingcar-6/tree/Danden1 GitHub - Danden1/java-racingcar-6 Contribute to Danden1/java-racingcar-6 development by creating an account on GitHub. github.com 이번에는 테스트 코드 작성을 위해 리팩토링을 많이 진행했었습니다. 이번 조건으로는 랜덤으로 9까지 숫자를 생성하는데, 4 이상 일 경우만 전진을 진행하도록 해야 했습니다. 이 랜덤 값을 테스트하기 위해서 리팩토링을 진행했습니다. 처음 코드입니다. 처음에 짠 코드가 저 빨간 줄 입니다. 이는 테스트할 방법이 없습니다. 그래서 .. 2023. 11. 5.
[우아한테크코스 프리코스 6기] 1주차 숫자 야구 회고 작년에도 프리코스에 참가를 했었습니다. 작년과 비교하여 얼마나 발전했는지 궁금해서 이번에 참여해 봤습니다. 작년 코드 우선 작년에 구현했던 코드 구조부터 한 번 보겠습니다. https://github.com/Danden1/java-baseball/tree/Danden1 GitHub - Danden1/java-baseball: 숫자 야구 게임 미션을 진행하는 저장소 숫자 야구 게임 미션을 진행하는 저장소. Contribute to Danden1/java-baseball development by creating an account on GitHub. github.com 이렇게 분리했었네요. Model에 숫자를 만들고, 유효성을 검사하고 strike가 몇 개인지 판단하는 등 모든 기능이 들어가 있습니다. 이.. 2023. 10. 26.