묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
실습1의 커버리지 관련 설명이 잘 이해되지 않습니다
"테스트 추가하기: h2를 이용한 repository 테스트" 편의 10:39 에서, "잘 커버된 것 같아요"라는 말을 하셨는데 이 상황을 이해하기가 어렵습니다.PostEntity 와 관련된 테스트가 없는데 PostEntity 의 라인 14%가 충족되었다고 나옵니다. 이런저런 이유로 그냥 채워지는 경우도 있습니다만, 하단의 첨부 사진과 같이 제 화면에서는 0%로 보입니다. 혹시 이 차이가 왜 발생하는지 아시나요? (저는 temurin-17, IntelliJ Ultimate 2014.1.4 을 쓰고 있습니다) UserEntity 에도 동일한 질문을 드릴 수 있을 것 같습니다.UserRepository 인터페이스는 메서드가 존재하는데 0개 있다고 표기되고 있습니다 ("0/0"). 왜 이렇게 나오는지 아시나요?UserRepository 는 사실상 아무 메서드도 없다고 판단되었기 때문에 커버리지가 100% 로 나온 듯 합니다. 그 위의 PostRepository 도 (테스트가 없는데) 100% 로 나왔으니 그렇게 해석하는게 맞는듯 합니다. 따라서 이 대목에서 커버리지가 아무것도 측정되지 않은 것 같습니다. (위 1,2 질문의 대답에 따라 달라질수도 있겠지만) 여기까지 제가 이해한게 맞을까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
한글 깨짐
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요.강의 따라가다 막히는 부분이 있어서 질문 드립니다.gradle 설정에서 Build and run using과 Run tests using을 인텔리제이로 바꾸면 한글 깨짐은 해결이 되는데 gradle로 실행하게 되면 한글이 깨집니다.설정에 들어가서 인코딩도 모두 utf-8로 설정해도 콘솔로 출력할 때 한글이 깨지는 현상이 발생합니다. 검색해보니 build.gradle에 설정을 utf-8로 변경하는 것도 있던데 결과는 똑같습니다.해결하는 방법이 있을까요?
-
미해결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분 쪽에서 타입 이름 변경하실때 왼쪽과 오른쪽 타입의 이름을 동시에 변경하시던데 단축키 어떤거 사용하시는건지 궁금합니당!
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
헥사고날 아키텍처에서 Entity 내의 from과 to 메서드도 분리하고 싶다면?
강의 열심히 들으며 실습하고 있습니다!헥사고날 아키텍처를 학습하며 적용해 보니 다양한 어려움이 생기더라구요 ㅠㅠ혹시 entity 내의 from과 to 메서드조차 분리하고자 할 때 궁금한 점이 생겼습니다.Entity 내의 from과 to 메서드로 domain ↔ entity를 변환하는 것을 Converter 클래스를 통해 관심사를 분리하는 것이 괜찮은지?만일 분리한다면, Converter interface의 위치는 domain 하위 port package일지, infrastructure 하위 port를 만들어 사용할지? (Impl 구현체는 따로 패키지를 생성할 예정입니다)강의 열심히 듣고 보내주신 책도 잘 받아 열심히 공부하고 있습니다 ㅎㅎ책에 껴주신 Thankyou.java 파일 잘 받았습니다! 감사합니다
-
미해결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 테스트를 대체할 수 있을 것으로 보입니다. 실무환경에서는 어떻게 관리되는지 궁금하고, 만약 두개의 테스트코드로 나눠서 관리된다면 굳이 왜 나눴는지가 궁금합니다!!!!우빈 강사님. 강의에서 정말 많이 배워갑니다 감사합니다!!! ㅎㅎㅎㅎ
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 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실패 데이터 요청 -> 성공 데이터 응답성공 데이터 요청 -> 실패 데이터 응답
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
기능
taliWindcss를 사용해서 클래스네임에 작성을하고 마우스를 가져다 대면 75% 이런식으로 나온다고 하셨는데 아무것도 안나오는데 어떻게 하나요? 이 부분 강사님처럼 모양 바꾸고 싶은데 어떻게 하나요?
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
오류가 안보여요
Form 컴포넌트를 신규로 만들어서 기존 컴포넌트에서 가져왔는데 강의에서는 오류가 표시가 되지만 저는 오류가 나타나지 않아서 현재, Form.js 파일에는 오류가 없는걸로 나오는데 어떻게 해야 하나요?
-
해결됨Practical Testing: 실용적인 테스트 가이드
패키지 구조
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의를 수강 중 질문이 생겨 질문드립니다.강의 프로젝트의 패키지 구조를 보면 spring 속 api와 domain으로 나누었는데 이는 헥사고날 아케텍쳐와 연관이 있는 건가요??제 생각엔 domain으로만 구별을 해서 한 domain안에 service, controller, entity, repository를 생성했습니다.
-
해결됨Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
FakeRepository 작성 방법
DB에 의존하지 않는 FakeRepository를 구현할 때 JPARepository의 작동 원리를 고려하여 직접 코드를 작성하는걸로 이해했는데, 그렇다면 FakeRepository에 복잡한 쿼리를 쓰는 메소드가 필요하다면 그때마다 코드를 만들어줘야 하나요?? 예를 들면) 아래와 같은 메소드를 FakeRepository에서 구현하여 Test하고 싶을 때는 어떻게 하는 건가요?@Query(value = "SELECT * FROM (SELECT * FROM customer ORDER BY like_total DESC) WHERE ROWNUM <= 3", nativeQuery = true) List<UserEntity> findTop3ByLikeTotal();
-
미해결Practical Testing: 실용적인 테스트 가이드
Dto 사용에 관하여
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의 코드를 작성중 궁금한 점이 생겨 질문드립니다.강의 예제 코드에서는 Dto를 예를 들어 OrderResponse 이런 식으로 Response, Requset를 생성해서 작성하셨는데 실무에서도 이런 방법으로 하시는 지 궁금합니다.예로 프로젝트가 커지게 된다면 Order에 대해서도 많은 Request, Response가 발생하게 되어 저는 OrderDto 클래스를 두고 OrderDto클래스 속 static inner 클래스로 여러 Dto 클래스를 만들어서 사용했습니다. 이와 같은 방법은 추천 안하시는 지 궁금합니다.또 Dto클래스를 record로 작성하는 경우도 봤는데 record를 사용하는 방법은 어떠한지 궁금합니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
테스트 대상
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님강의 13분초 쯤 productType에 대해 test를 하시는데 이 때 HANDMADE와 BAKERY에 대해서만 테스트를 진행하셨는데 BOTTLE에 대해서는 안해도 될까요?? 실무에서는 어떻게 하는 지 궁금합니다. 뭔가 추가해주어야 할 거 같아서요!
-
미해결Practical Testing: 실용적인 테스트 가이드
테스트 나누는 기준
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 37분 쯤 test를 주문 생성 시 주문 상태는 INIT이다 라는 test를 하시는데 이를 이전 TotalPrice test하는 testcode와 같이 합쳐서 주문 생성 시 주문 상태는 INIT , TotalPrice를 구할 수 있다 이런식으로 하나로 합치는 건 어떻게 생각하시나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
서비스 레파지토리 의존
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의를 듣던 중 의문점이 생겨 질문을 남깁니다.강의 28분 쯤 OrderService에서 ProductRepository를 의존하게 되는데 보통 A 레파지토리는 A서비스에서만 의존 하고 B레파지토리를 접근하려면 B서비스를 통해 접근한다 라고 들은 기억이 있는데 혹시 강사님만의 기준이 있을까요??감사합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
RESTFUL API
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. RESTFUL API 방식으로 url 작성 시 강의 13분에 나오는 postmapping에 orders/order이 더 맞지 않나요?? new 보단