묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
한글 깨짐
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요.강의 따라가다 막히는 부분이 있어서 질문 드립니다.gradle 설정에서 Build and run using과 Run tests using을 인텔리제이로 바꾸면 한글 깨짐은 해결이 되는데 gradle로 실행하게 되면 한글이 깨집니다.설정에 들어가서 인코딩도 모두 utf-8로 설정해도 콘솔로 출력할 때 한글이 깨지는 현상이 발생합니다. 검색해보니 build.gradle에 설정을 utf-8로 변경하는 것도 있던데 결과는 똑같습니다.해결하는 방법이 있을까요?
-
미해결쥬쥬와 함께 하루만에 끝내는 스프링 테스트
github action
좋은 강의 너무 잘 들었습니다.그런데 github action 파일에서 jdk 설치는 왜 필요한 것일까요?그리고 jdk 설치 등 job의 실행 주체는 github action 이라는 깃허브 repository 내장된 서버라고 보면 될까요?감사합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
통합 테스트 시 변수 지정은 어떻게 해주는게 좋을까요?
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. DB_URL과 같이 변수로 지정하여 통합 테스트를 수행할 경우 따로 설정해주어야하는데요. 저는 보통 인텔리제이에서 environment variables에 추가하여 실행해줍니다. 그런데 CI에서 빌드를 해줄 경우에도 변수를 지정해주어야하는데요. 테스트에도 지정하고 빌드할 때에도 지정해주는 것이 비효율적인것 같습니다. 이럴 경우 어떻게 설정해주는게 좋을까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
외부API 연동 mocking시 json구조가 복잡하다면 어떻게해야하나요?
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요! 이번 강의 편에서 외부 API mocking에 대해서 다뤄주셔서 감사합니다!궁금한점이 현재 메일을 보내는 sendEmail의 경우 반환타입이 boolean이라 쉽게 테스트가 가능한것 같은데, 만일 RestTemplate/RestClient 와 같이 외부 API 연동한걸 mockito사용해서 가짜 객체로 테스트한다고 했을때, 실제 응답으로 받은 Json의 구조가 복잡할 경우에 어떻게 할지 궁금합니다.thenReturn() 메서드에 해당 응답의 Json구조를 반영한 DTO를 넣어주면 될까 싶었는데, 결국에는 외부 API 응답 구조를 알고 있어야 되는 거라 의존적이라고 생각이 들거든요! 만약 외부 API 응답의 Json 구조가 달라지면 테스트가 깨지게 되는건데, 외부 응답 구조를 몰라야 mocking의 의미가 있는게 아닌지 헷갈립니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
34:40초 부분에서 단축키 어떻게 사용하시나욤
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요! 좋은 강의 감사합니다.영상 중에 34분 쪽에서 타입 이름 변경하실때 왼쪽과 오른쪽 타입의 이름을 동시에 변경하시던데 단축키 어떤거 사용하시는건지 궁금합니당!
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
TestPayment에 쿠폰 정보를 prop으로 전달하는 이유
안녕하세요. Payment테스트 코드 작성 부분에서 몇가지 궁금한점이 생겨 질문 드립니다. 1. 실제 Payment 컴포넌트에서는 useCouponList훅으로부터 selectedCoupon데이터를 받아와서 사용하는데 테스트 코드에서는 쿠폰 정보를 prop으로 전달하는 이유가 무엇인가요?2. 실제 구현 동작을 보면 ShippingInformationForm에서 쿠폰을 선택하면 Payment 쿠폰란에 곧바로 반영되는데 이런 부분까지는 통합테스트에서 검증하지 않아도 되나요?
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
NavigationBar 테스트 속도가 너무 느린 문제
안녕하세요.지금 챕터5 네비게이션바 테스트 코드 작성 부분을 보고 있는데 테스트 속도가 너무 느린 문제가 발생합니다ㅜ 테스트 항목 하나를 테스트 할때마다 21초씩 걸립니다... 생각보니 이 전 챕터에서도 테스트 시간이 조금 오래 걸리긴 했던거 같긴 해요. 이건 제 컴퓨터 문제일까요, 아니면 속도 저하의 원인을 파악하는 방법이라도 있을지 조언을 구해 봅니다ㅠㅠ
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
헥사고날 아키텍처에서 Entity 내의 from과 to 메서드도 분리하고 싶다면?
강의 열심히 들으며 실습하고 있습니다!헥사고날 아키텍처를 학습하며 적용해 보니 다양한 어려움이 생기더라구요 ㅠㅠ혹시 entity 내의 from과 to 메서드조차 분리하고자 할 때 궁금한 점이 생겼습니다.Entity 내의 from과 to 메서드로 domain ↔ entity를 변환하는 것을 Converter 클래스를 통해 관심사를 분리하는 것이 괜찮은지?만일 분리한다면, Converter interface의 위치는 domain 하위 port package일지, infrastructure 하위 port를 만들어 사용할지? (Impl 구현체는 따로 패키지를 생성할 예정입니다)강의 열심히 듣고 보내주신 책도 잘 받아 열심히 공부하고 있습니다 ㅎㅎ책에 껴주신 Thankyou.java 파일 잘 받았습니다! 감사합니다
-
미해결쥬쥬와 함께 하루만에 끝내는 스프링 테스트
Model 의존 java.lang, jakarta
좋은 강의 잘 듣고 있습니다.<의존성 검증: Controller는 Entity를 사용하고 있을까?> 강의에서요.11:40초 쯤에서 에러 로그들이 의미하는 것이 궁금합니다.Class <com.jyujyu.dayonetest.model.StudentFail> is annotated with <jakarta.persistence.Entity> Class <com.jyujyu.dayonetest.model.StudentPass> extends class <java.lang.Object>..위 같은 에러는 해당 모델들(StudentFail, StudentPass) 이 @Entity 로 정의되었으므로 jakarta.persistence.Entity, jakarta.persistence.Table> 에서 사용된 것은 알겠는데java.lang.Object 로 사용된 것은 어떻게 봐야 하나요?단순 Object 라면, 모든 클래스는 Object 를 의존하는 것 아닌가요?미리 답변 감사합니다!
-
미해결실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
안녕하세요, 단위 테스트 대상 관련해서 질문있습니다.
web api인 IntersectionObserver을 활용한 훅이 있는데요, 훅은 독립적으로 동작되기 때문에 단위 테스트 대상이라고 말씀하셨는데, 궁금한점은 web api를 활용한 훅은 단위테스트 대상일까요?테스트 환경이 다르고 web api는 이미 검증된 api이기 때문에 단위테스트 대상에서 제외 했거든요만약 단위 테스트 대상이라면 web api를 모킹해서 훅을 통해 반환한 값들을 확인 하면될까요?단위테스트 대상이 아니라면 통합테스트에서 해당 훅을 제대로 호출해서 사용하는지만 확인하면 될까요?
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
만약 상호작용하는 컴포넌트에서 각각 상태를 관리하고 있다면
안녕하세요.효율적인 테스트를 위해 상태 관리는 상위 컴포넌트에 응집해서 관리하는것이 좋다고 하셨는데컴포넌트가 캡슐화 되어있으면 서로 상호 작용하는 컴포넌트지만 동일한 상태 조회를 각 컴포넌트에서 독립적으로 하게되는 경우도 있을거 같습니다.이런 경우는 테스트에 용이하도록 구현 코드를 수정해야하는지, 아니면 번거롭더라도 그대로 테스트 코드를 작성해야 하는지 궁금합니다.애초에 컴포넌트 설계를 잘못했다고 판단해야 할까요?
-
미해결실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
util 함수, const를 사용하지 않는 이유가 있을까요 ?
'특정 아이템의 수량이 변경되었을 때 값이 재계산되어 올바르게 업데이트 된다' 테스트 실행시 변경점이 있는 price를 '$4,045.00'과 같이 직접 입력하셨는데요. 이 부분을 formatPrice(809*4) 이런식으로 하면 formatPrice에 변경점이 생겼을 때도 테스트가 깨지지 않고 검증할 수 있고, 작성하기 더 쉬워보인다고 생각하는데요. 혹시 그렇게 하지 않은 이유가 따로 있을까요 ? (독립성을 보장한다던가..) 아래의 '특정 아이템의 수량이 1000개로 변경될 경우 "최대 999개 까지 가능합니다!"라고 경고 문구가 노출된다' 테스트의 cartValidationMessages.MAX_INPUT_VALUE 값도 마찬가지입니다 !!
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
2.1강 테스트에서 헷갈리는 부분이 있습니다.
안녕하세요. 몇가지 의문이 있어 질문 드립니다.올바른 테스트 작성 규칙에서 내부 구현에 대한 테스트, 단순한 UI렌더링 관련 테스트는 하지 않는것이 좋다고 하셨는데,className prop이 css class에 적용되는지, placeholder설정, focus 시 border 스타일이 변경되는지 테스트하는건 단순히 UI와 관련된 테스트가 아닌가요?getByPlaceholder API는 만약 구현코드에서 placeholder 내용이 달라지면 테스트 코드도 모두 수정해야 하는데 종속성이 있다고 볼 수 있지 않나요?아직 테스트가 익숙하지 않아 그런지 이런 부분이 많이 헷갈립니다ㅜㅜ
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
1.3강 npm run dev 안되는 문제
문제)의존성 설치 후 npm run dev를 기동하면$ npm run dev> test-example-shopping-mall@0.0.0 dev> concurrently --kill-others 'npm run dev:server' 'npm run dev:ui'[0] ''npm'��(��) ���� �Ǵ� �ܺ� ����, ������ �� �ִ� ���α�, �Ǵ�[0] ��ġ ������ �ƴմϴ�.[1] 'run'��(��) ���� �Ǵ� �ܺ� ����, ������ �� �ִ� ���α�, �Ǵ�[1] ��ġ ������ �ƴմϴ�.[2] ���� �̸�, ���� �̸� �Ǵ� ���� ���̺� ������ �߸��Ǿ����ϴ�.[3] ''npm'��(��) ���� �Ǵ� �ܺ� ����, ������ �� �ִ� ���α�, �Ǵ�[3] ��ġ ������ �ƴմϴ�.[4] 'run'��(��) ���� �Ǵ� �ܺ� ����, ������ �� �ִ� ���α�, �Ǵ�[4] ��ġ ������ �ƴմϴ�.[4] run exited with code 1--> Sending SIGTERM to other processes..[3] 'npm exited with code 1--> Sending SIGTERM to other processes..--> Sending SIGTERM to other processes..[1] run exited with code 1--> Sending SIGTERM to other processes..[0] 'npm exited with code 1--> Sending SIGTERM to other processes..[5] ���� �̸�, ���� �̸� �Ǵ� ���� ���̺� ������ �߸��Ǿ����ϴ�.[5] dev:ui' exited with code 1이런 콘솔이 찍히며 테스트 서버가 실행되지 않습니다.인코딩이 깨져서 뭐가 문젠지 추적을 못하겠어요ㅠㅠnode 버전은 강의와 동일하게 19.9.0으로 맞춰두었습니다.+) 인코딩이 깨지는 문제는 vscode터미널 말고 다른 커맨드창을 이용하니 해결 되었습니다.> test-example-shopping-mall@0.0.0 dev > concurrently --kill-others 'npm run dev:server' 'npm run dev:ui' [0] ''npm' is not recognized as an internal or external command, [0] operable program or batch file. [1] 'run' is not recognized as an internal or external command, [1] operable program or batch file. [2] The filename, directory name, or volume label syntax is incorrect. [3] ''npm' is not recognized as an internal or external command, [3] operable program or batch file. [4] 'run' is not recognized as an internal or external command, [4] operable program or batch file. [4] run exited with code 1 --> Sending SIGTERM to other processes.. [3] 'npm exited with code 1 --> Sending SIGTERM to other processes.. [2] dev:server' exited with code 1 --> Sending SIGTERM to other processes.. [1] run exited with code 1 --> Sending SIGTERM to other processes.. [0] 'npm exited with code 1 --> Sending SIGTERM to other processes.. [5] The filename, directory name, or volume label syntax is incorrect. [5] dev:ui' exited with code 1그런데 여전히 실행이 안됩니다ㅜㅜnpm을 못찾는거 같은데 환경변수에 따로 등록을 해야하나요? npm -v하면 버전은 잘 나오는데 원인을 모르겠습니다...현재 환경변수와 버전정보 추가합니다.+) package.json스크립트에서 작은 따옴표를 큰 따옴표로 수정해서 최종적으로 해결되었습니다... 허무하네용ㅋㅋㅋ ㅠ
-
미해결Practical Testing: 실용적인 테스트 가이드
ApiResponse에 대해 질문있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. ApiResponse클래스에 HttpStatus와 code를 같이 보내게 되는데 사실 ResponseEntity.ok().body(ApiResponse~~~)이런 식으로 보내게 된다면 httpstatus가 HTTP 메시지의 바디에도 있고 헤더에도 있게 되는데 굳이 바디에 한 번 더 보내시는 이유가 있으신가요??실무에서는 어떻게 하시는 지 궁금합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
DocsTest와 @WebMvcTest로 만든 테스트를 왜 통합하지 않는지 궁금합니다!!
안녕하세요. 박우빈 강사님. 강의 너무 잘 듣고 있습니다 ㅎㅎㅎ강의를 보고 생각을 하다가 의아하다고 느낀 점이 있어서 질문드립니다.이전에 만든 Controller 테스트와 이번 강의에서 만들었던 DocsTest가 결국 controller를 테스트한다는 점은 동일하고, 문서를 만든다는 개념만 다를 뿐인데, 기능의 중복으로 보이는데 서로 따로 만드는 이유가 있을까요??기존에 Controller 테스트에서 @WebMvcTest를 삭제하고, 필요한 클래스와 mock을 정의한 뒤, API당 하나의 테스트 메서드에만 .andDo(document()를 작성하면 controller 테스트도 수행할 뿐더러 REST Docs를 출력까지 하니 더 좋지 않나 라는 생각이 들었습니다.@WebMvcTest와 이번 강의에서 작성한 DocsTest코드가 .andDo(document()를 이용한 테스트코드내용 출력 기능을 제외하고는 결국 중복된 코드로 보이는데, 기존에 controller test와 DocsTest를 하나로 합쳐서 관리해도 되는 것일까요?요약 : 이번 강의에서 만든 DocsTest로 이전에 만들었던 Controller 테스트를 대체할 수 있을 것으로 보입니다. 실무환경에서는 어떻게 관리되는지 궁금하고, 만약 두개의 테스트코드로 나눠서 관리된다면 굳이 왜 나눴는지가 궁금합니다!!!!우빈 강사님. 강의에서 정말 많이 배워갑니다 감사합니다!!! ㅎㅎㅎㅎ
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
강의내용 중 Fake Repository 질문
안녕하세요. 강의 잘 듣고있습니다.제가 요즘 TDD에 대해서 이제 막 공부를 시작했습니다. 테스트방법에 대해서 mocking, stubbing이 있더라구요. 강의 내용 중 말씀해주신 FAKE 객체를 만들어서 테스트하는 방식이 Stubbing 방식이란 같은 것일까요? 실무에서도 Mockking 보다는 Stub객체를 만들어서 테스트하는 경우가 더 많은가요?아직 mocking과 stub객체를 사용해서 테스트 하는 방식의 차이나 목적이 이해가 잘 되지 않아서 질문드립니다.
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트
4.3 테스트 질문 입니다
시간: 9:00Q. ‘비밀번호를 입력하지 않고 로그인 버튼을 클릭할 경우 “비밀번호를 입력하세요” 경고 메시지가 노출된다’ 를 테스트 할 때, 비밀번호가 입력하지 않은 상태인지 확인하는 부분은 없어도 되는 건가요??비밀번호를 입력하는 요소가 null 인지 확인하는 테스트는 없어도 되는 건가요??
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트
5.2 테스트에서 상품 이름 사용, 로그인 세션 질문
Q1. 장바구니, 구매 버튼 클릭 시 해당 상품의 이름을 cy.findByText('Handmade Cotton Fish 장바구니 추가 완료!').should('exist) 상품 이름을 직접 입력하는데, (통합 테스트에서 모킹 데이터를 사용한다면 모킹 데이터는 직접 설정하기 때문에 가능하지만), 실제 api를 사용하면 첫번째 상품 데이터가 변경할 수도 있기 때문에 실패할 수도 있기 때문에 다르게 작성해야 하지 않을까요?? 질문 드립니다 Q2. 로그인을 커스텀 커맨드에서 설정해서 session을 사용해 설정해서 테스트할 때, 웹에서는 로그인 성공/실패 여부는 확인할 수 없는 것 아닌가요??로그인이 실패하게 되면 로그인 관련 테스트는 모두 실패하게 되는데 그냥 이 결과로 로그인 성공/실패 확인을 하는 건가요??
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트
5.3 cy.intercept 질문
Q. cy.intercept()는 회원 가입 요청에 대한 성공/실패 응답을 모킹해서 받는데, 이 때 의도하는 코드는 1번이지만 응답이 정해져 있기 때문에 2번처럼 틀린 요청으로도 결과는 똑같이 나오게 될 거라고 생각됩니다. 실제 응답이 아니라 응답을 정해 놓고 전달하기 때문에 실제 동작과 다를 수도 있어서 이 부분은 '실패, 성공 시 문구 노출'이 나타나는 동작이 있다는 document 로만 이해해도 될까요?? 1성공 데이터 요청 -> 성공 데이터 응답실패 데이터 요청 -> 실패 데이터 응답2실패 데이터 요청 -> 성공 데이터 응답성공 데이터 요청 -> 실패 데이터 응답