본문 바로가기

Trouble5

[TEST] 우아한 프리코스 테스트 코드 알아보기 들어가며.@Testvoid 기능_테스트() { assertRandomNumberInRangeTest( () -> { run("pobi,woni", "1"); assertThat(output()).contains("pobi : -", "woni : ", "최종 우승자 : pobi"); }, MOVING_FORWARD, STOP );}@Testvoid 예외_테스트() { assertSimpleTest(() -> assertThatThrownBy(() -> runException("pobi,javaji", "1")) .isInstanceOf(IllegalArgumentException... 2024. 10. 26.
[TEST] System.out 과 System.in 의 테스트 방법 들어가며.프리코스 2주차 자동차 경주 게임을 TDD 로 개발하면서 출력과 입력 기능은 어떻게 테스트를 할 수 있는지에 대한 고민이 생겼고 이에 대한 자료와 해결 과정을 정리하고자 한다.출력 기능 테스트.설명하기에 앞서 출력 기능 클래스와 테스트 코드를 보겠습니다.public class OutputViewer { private OutputViewer() { } public static void getCarNameInputMessage() { System.out.println(Constant.CAR_NAME_INPUT_STRING); } public static void getTryCountInputMessage() { System.out.println(C.. 2024. 10. 24.
[Git] 첫 번째 커밋 삭제 시 reset 으로 삭제하면 안 되는 이유 # 오류1. Git Repository 생성 후 push하지 않은 commit을 되돌리고자 reset 명령어 사용2. —hard, —soft 둘다 명령어가 들지 않음 # 이유처음으로 생성한 커밋을 삭제할 떄 reset 명령어가 들지 않는 이유는 Git의 내부 동작과 브랜치 참조 구조 때문이다. 첫 번째 커밋은 루트 커밋이며, 이전 커밋이 없다. 따라서 ‘git reset’은 현재 브랜치의 HEAD를 다른 커밋으로 이동시키는 것으로, 이전 커밋이 없기 때문에 적용할 수 없다. # 해결방법git update-ref -d HEADgit rm --cached -r . update-ref란 commit을 가리키는 해시 값을 업데이트 하는 것인데 -d 옵션은 이를 지우는 명령어이다. 따라서 HEAD가 가리키는 해시.. 2024. 8. 17.
[Lombok] @Builder 정적 가져오기 문제 프로젝트를 하면서 @Builder 를 사용하는 경우가 흔한데 static으로 불러오는 과정에서 문제가 생겼습니다.  위와 같이 @Builder가 적용된 클래스에서 사용된 필드를 원하는 값으로 초기화 하고자 @Builder.Default 를 사용하였습니다.   그러다 @Builder.Default가 길다고 느껴져서 @Default로 바꾸고자 위와 같이 static으로 선언해서 가져오도록 바꿨는데 여기서 문제가 발생했습니다.  이러한 문제를 해결하고자 여러 자료를 검색하다 아래와 같은 내용을 찾게되었습니다. https://stackoverflow.com/questions/47674264/static-import-not-working-in-lombok-builder-in-intellij static impor.. 2024. 8. 17.
[QueryDSL] 컬렉션 fetchJoin 페이징 applying in memory firstResult/maxResults specified with collection fetch; applying in memory QueryDSL을 사용하는 도중 로컬 환경에서 테스트할 때는 발견하지 못하다가 서버 배포 단계에서 나타난 에러이다. # 원인 일대다 관계, 혹은 컬렉션 패치 조인을 하게 된다면 데이터가 뻥튀기 되는 카테시안 곱 이 발생하게 된다. 이 때 Limit을 사용하여 페이징을 하게 된다면 데이터를 예측할 수 없기에 모든 데이터를 메모리로 가져와 처리하게 된다. 만약 데이터가 많아지게 된다면 성능에 문제가 생길 수 있다. # 해결방안# 1. Batch Size# 2. 페이징 처리 후 fetchJoin저의 경우는 두번째 방법을 사용하여 해결하였습니다.@Overridepublic Lis.. 2024. 8. 8.