inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

notifyall에서 질문

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 마지막 notifyall에서 만약에 c1 다음에 p1이 락을 획득하면 나머지 c2, c3, c4, c5는 대기집합에 들어가나요 아니면 깨어있는 상태로 계속있나요?

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
썩은도토리 댓글 2 좋아요 0 조회수 187

생성자 생성시 질문있어요

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

5분37초 영상입니다. 해당 main함수에서 Child c = new Child()를 생성시엔 부모 클래스의 메서드를 부르지 않나요? Child() 생성자가 없기때문에 무시한 것인지 알고싶어요

  • python
  • java
  • c
  • 정보처리기사
주서 댓글 3 좋아요 0 조회수 304

distinct 질문 드립니다.

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요. 강의 잘 보고 있습니다. em.createQuery에서 distinct를 사용해도 DB에서 받아올 때는 뻥튀기된 데이터를 받아오는 것이 맞을까요? em.createQuery의 반환값으로 List<Order>에 담을 때 Order의 id 중복을 제거해서 담은 뒤 반환한다는 것이 맞을까요? 결국 distinct를 사용하나 안 하나 DB에 나가는 쿼리는 같을까요? public List<Order> findAllWithItem() { return em.createQuery( "select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi" + " join fetch oi.item i", Order.class) .getResultList(); } 참고한 질문과 답변입니다. https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-API%EA%B0%9C%EB%B0%9C-%EC%84%B1%EB%8A%A5%EC%B5%9C%EC%A0%81%ED%99%94&unitId=24332&tab=community&category=questionDetail&q=555554

  • java
  • spring
  • spring-boot
  • jpa
저스트 댓글 1 좋아요 0 조회수 388

인텔리제이 먹통

미해결

김영한의 실전 자바 - 중급 2편

인텔리제이 무료버전이 다 끝나서 다시 지우고 무료료 쓸 수있는 학생버전으로 깔았는데 그 다음부터 김영한님의 파일들이 잘 작동이 안됩니다. 일텔리제이 버전은 아래와 같습니다: IntelliJ IDEA 2024.2.1 (Ultimate Edition) Build #IU-242.21829.142, built on August 29, 2024 Licensed to xx Subscription is active until September 2, 2025. For educational use only. Runtime version: 21.0.3+13-b509.11 aarch64 (JCEF 122.1.9) VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. 김영한님의 폴더를 오픈하면 소스 파일이 안뜨고 이런식으로 뜹니다 또 어쩔때는 소스파일이 다 뜨지만 run을 하면 run이 실행되고 다시 프로젝트 목록의 소스파일들이 다 사라집니다

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
  • 인텔리제이
최연승 댓글 1 좋아요 0 조회수 290

REST Docs 추가 작업중 직렬화,역직렬화 문제

미해결

Practical Testing: 실용적인 테스트 가이드

강사님이 기존에 작성해주신 코드들을 가지고 REST Docs를 채워보려고 하고있습니다 ! OrderController의 createOrder 메서드에 대해서 테스트 해서 docs를 채워보려고 하는 와중에 LocalDateTime에서 직렬화와 역직렬화 문제가 발생하여서 질문드립니다 ! public class OrderControllerDocsTest extends RestDocsSupport { private final OrderService orderService = mock(OrderService.class); @Override protected Object initController() { return new OrderController(orderService); } @BeforeEach void setUp() { objectMapper.registerModule(new JavaTimeModule()); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); } @DisplayName("신규 주문을 생성하는 API") @Test void createOrder() throws Exception { OrderCreateRequest request = OrderCreateRequest.builder() .productNumbers(List.of("001", "002")) .build(); List<ProductResponse> productResponses = List.of( ProductResponse.builder() .id(1L) .productNumber("001") .type(HANDMADE) .sellingStatus(SELLING) .name("아메리카노") .price(4000) .build(), ProductResponse.builder() .id(2L) .productNumber("002") .type(HANDMADE) .sellingStatus(HOLD) .name("카페라떼") .price(4500) .build() ); given(orderService.createOrder(any(OrderCreateServiceRequest.class), any(LocalDateTime.class))) .willReturn(OrderResponse.builder() .id(1L) .totalPrice(8500) .registeredDateTime(LocalDateTime.now()) .products(productResponses) .build()); mockMvc.perform( post("/api/v1/orders/new") .content(objectMapper.writeValueAsString(request)) .contentType(MediaType.APPLICATION_JSON) ) .andDo(print()) .andExpect(status().isOk()) .andDo(document("order-create", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestFields( fieldWithPath("productNumbers").type(JsonFieldType.ARRAY) .description("상품 번호 리스트") ), responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), fieldWithPath("status").type(JsonFieldType.STRING) .description("상태"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지"), fieldWithPath("data").type(JsonFieldType.OBJECT) .description("응답 데이터"), fieldWithPath("data.id").type(JsonFieldType.NUMBER) .description("주문 ID"), fieldWithPath("data.totalPrice").type(JsonFieldType.NUMBER) .description("주문 총합 가격"), fieldWithPath("data.registeredDateTime").type(JsonFieldType.STRING) .description("상품 주문 시간"), fieldWithPath("data.products").type(JsonFieldType.ARRAY) .description("상품 판매 목록"), fieldWithPath("data.products[].id").type(JsonFieldType.NUMBER) .description("상품 ID"), fieldWithPath("data.products[].productNumber").type(JsonFieldType.STRING) .description("상품 번호"), fieldWithPath("data.products[].type").type(JsonFieldType.STRING) .description("상품 타입"), fieldWithPath("data.products[].sellingStatus").type(JsonFieldType.STRING) .description("상품 판매 상태"), fieldWithPath("data.products[].name").type(JsonFieldType.STRING) .description("상품 이름"), fieldWithPath("data.products[].price").type(JsonFieldType.NUMBER) .description("상품 가격") ) )); } } 이렇게 코드를 작성하니 LocalDateTime을 Array로 만들더라구요 일단 그래서 Array로 해서 반환하니까 물론 테스트는 문제없이 넘어가지만 실제 프로덕션 코드의 Response 코드를 확인해보니 LocalDateTime으로 String으로 넘어가고 있었습니다. 테스트와 실제 프로덕션 코드의 간극이 생기는데 어떻게 해결하면 좋을까요 ? 그리고 기존에 알려주셨던 ProductionControllerDocsTest의 코드를 많이 참고해서 테스트를 작성하였는습니다. 여기서 든 의문점이 이렇게만 작성하면 request와 response만 정의할 뿐 실제로 테스트는 동작하지 않는 것 아닌가 ? 라는 의문이 들었습니다. 실제로 OrderResponse.builder()를 맘대로 바꿔도 테스트가 깨지지않는 상황입니다. 그래서 단순히 Controller단 테스트는 수업때 설명하신 것 처럼 파라미터에 대한 검증만을 하는 것이기 때문에 REST Docs 또한 Request 와 Response의 필드가 어떻게 구성되어있는지 정도만 보여주는 용도로 사용되는건지도 궁금합니다 !

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
나민혁 댓글 2 좋아요 0 조회수 192

강사님이 실무하실 때 어떤 테스트 DB를 사용하시는지 궁금해요

미해결

Practical Testing: 실용적인 테스트 가이드

제목 그대로 강사님께서 실무하실 때 어떤 테스트 DB를 사용하지는 지 궁금합니다요 강의처럼 h2 in-memory? 로컬 DB? (이건 하지 않으실것같아요) 테스트 컨테이너? 강사님의 경험을 나누어 주세요 🙇‍♂

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
19 댓글 2 좋아요 0 조회수 239

스프링 부트 3버전에서의 실습

미해결

스프링 기반 REST API 개발

스프링 부트 3버전에서의 실습 관련 업데이트는 진행하지않는건가요?

  • java
  • spring
  • rest-api
jun 댓글 1 좋아요 0 조회수 213

실제로 업무를 하실 때는 mock 객체를 통해서 컨트롤러 테스트만 작성해두고 시작한다는게 무슨 의미인가요 ?

미해결

Practical Testing: 실용적인 테스트 가이드

우선 강사님 강의 정말 잘 듣고있습니다 ! 테스트에 관심을 갖게되어서 강의를 보게 되었는데 너무 배울게 많은 것 같아서 감사합니다. 저도 Rest Docs를 이용해서 먼저 문서화 해서 작업을 진행해보려고 하는데 제가 아직 학생이라 그런지 잘모르는 부분이 많아서 정확하게 와닿지가 않아서 질문드립니다 ! 기존에 DocsTest처럼 Test를 만들어서 서비스를 mock으로 만들어서 구현한다는 것 까지는 알겠습니다. 이때 BDDMockito의 given을 안에 메서드가 들어가고 Request와 Response가 들어가는데 메서드는 메서드명과 파라미터, 리턴타입 정도까지만 정해두고 Request와 Response를 정의한다는 의미일까요 ? 그리고 당연히 실무니까 Domain Entity는 정의되어있는 상태에서 진행하기 때문에 Entity 정도는 정의되어있는 상태에서 작업을 진행하는걸까요 ? 질문을 정리하자면 실제 프로덕션 코드를 작성하기 전 REST Docs를 먼저 작성할 때 어느정도 코드를 작성해야하는지 궁금합니다 !

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
나민혁 댓글 2 좋아요 0 조회수 267

시큐리티 완전정복(6.x 개정판) 쿠폰 저도 받을수 있을까요.. ㅜ

해결됨

스프링 시큐리티 OAuth2

학습질문과 전혀 관련없는 질문이라 죄송합니다. ㅠ 저와같이 할인쿠폰 만료일 지나신 분 쿠폰요청글을 보고 혹시나 저도 아직 가능한지 여쭙고 싶어서 혹시나 하는 마음에 글올립니다. oAuth하고 이전버전 시큐리티 강의 듣고 있습니다. 저도 메일을 늦게 확인하여서 쿠폰 만료일이 지났는데 받을수있을까요? 발급받았던 이메일 주소 는 laundryday@naver.com 입니다.. 좋은 하루 보내세요 감사합니다.

  • java
  • spring
  • spring-boot
  • oauth
Hong Yong Taek 댓글 0 좋아요 0 조회수 140

어떻게 오버라이딩된 toString()의 형식으로 출력되는지 헷갈립니다ㅠㅠ

미해결

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예) [질문 내용] 위의 코드에서 WildCardEx.printGenericV1(dogBox); 의 결과로 T = Animal{name='멍멍이', size=100} 이렇게 Animal에 오버라이딩한 toString의 형태가 출력되는지 궁금합니다...ㅠㅠ printGenericV1() 메서드에서는 box.get()을 사용하고 있지만, get() 메서드는 return 으로 그저 Dog 객체를 반환하는데 어떻게 오버라이딩 된 toString()의 형식으로 출력될 수 있는지 헷갈립니다ㅠ 기본적인 질문을 드려 죄송합니다...

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
김수환 댓글 1 좋아요 0 조회수 203

synchronized lock 획득 질문, 스프링에서 synchronized 질문

해결됨

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

이해 확인에 대한 질문입니다. synchronized는 메서드에서 현재 getBalance()랑 withdraw()에서 선언되었는데, lock은 객체가 가지고있다고 이해하고있습니다. synchronized 메서드가 실행시 lock을 가지고 간다면 synchronized가 선언되지 않은 메서드(동일 클래스)는 자유롭게 실행이 가능한거고, 만약 synchronized withdraw가 스레드1에서 실행중이라면 스레드2가 synchronized getBalance()시 락을 획득할 수 없어서 대기해야하는 것이 맞나요? 2. 제가 스프링 DB2까지 강의를 듣고있는데, 스프링에서는 실제로 WAS의 스레드 풀에서 기본적으로 많은 스레드를 확보해두고 있는 것으로 알고있습니다. 해당 강의들에서 synchronized를 사용해본 기억은 없는 것 같아요. 기본적으로 스프링은 synchronized가 필요한 부분에 구현이 되어있는 걸까요?(싱글톤 빈에 대한 질문입니다!) 아니면 멀티스레드의 측면도 개발자가 직접 테스트하면서 최적화가 필요할까요?(아마 제 예상으로는 개발자가 직접하는 부분도, 스프링이 해주는 부분도 있을 것 같은데...) 스프링 고급편, 부트편이나 JPA 학습 시점에 알 수 있는 부분일까요?

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
영한노게임 댓글 2 좋아요 0 조회수 358

inner sequence context 관련 질문

해결됨

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

안녕하세요 강사님 좋은 강의 감사드립니다. 해당 영상에서 예제 코드가 잘 이해가 되지 않아 질문 남깁니다. inner Sequence 내부에서 Context에 저장된 데이터를 외부에서 읽을 수 없다면 subscribe할 때 Context에 저장된 job은 inner 시퀀스에서 저장한 것이므로 읽을 수 없어야 한다고 생각이 들었습니다. 근데 실행 결과에서는 job에 대한 데이터를 잘 읽어오길래 혼란이 왔습니다. 제가 아직 리액티브 프로그래밍 동작 방식이 익숙치 않아서 그런데 확인해주시고 부연 설명해주시면 정말 감사드리겠습니다. @Slf4j public class ContextFeatureExample4 { public static void main(String[] args) throws InterruptedException { String key1 = "id"; Mono.just("Kevin") // flatMap 내부: inner Sequence .flatMap(name -> Mono.deferContextual(ctx -> Mono.just(ctx.get(key1) + ", " + name) .transformDeferredContextual((mono, innerCtx) -> mono.map(data -> data + ", " + innerCtx.get("job"))) .contextWrite(context -> context.put("job", "Software Engineer")) ) ) .publishOn(Schedulers.parallel()) .contextWrite(context -> context.put(key1, "itVillage")) .subscribe(data -> log.info("onNext = {}", data)); Thread.sleep(100L); } }

  • java
  • spring
  • project-reactor
  • webflux
chaelynjang 댓글 1 좋아요 0 조회수 158

학습 방법에 대한 고민

미해결

김영한의 실전 자바 - 기본편

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 현재 기본편 접근제어자를 학습하고 있는데 예제에서 이전에 공부했던 배열이나 생성자에 대한 내용에서 헤메이곤 하는데요.. 이런 상황에서 강의를 계속해서 수강하고 마지막까지 수강한 후에 다시 전체적으로 빠르게 수강하는것이 좋나요 아니면 헷갈릴때마다 다음 강의 보다는 전에 봤던 강의를 복습하는 방식이 좋을까요?

  • java
  • 객체지향
이효찬 댓글 1 좋아요 1 조회수 143

다형성 - 역할과 구현예제2 강의만 재생이 안돼요

미해결

김영한의 실전 자바 - 기본편

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 새로고참도 해보고 여러가지 다 해봤는데 이 강의만 재생이 안됩니다. 오류 확인 부탁드립니다.

  • java
  • 객체지향
박준형 댓글 2 좋아요 0 조회수 180

boundedElastic 관련 질문

미해결

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

안녕하세요 강사님 좋은 강의 감사드립니다. 해당 영상에서 Schedulers.boundedElastic() 이 아닌, newBoundedElastic() 예제를 보여주셨습니다. newBoundedElastic 예제는 어느정도 이해가 되었는데 boundedElastic() 실행 결과가 궁금하여 예제에서의 newBoundedElastic()을 boundedElastic() 으로 바꿔 실행해봤습니다. 실행결과가 첨부한 사진처럼 나오던데 스레드 풀에 있던 스레드 6개가 사용된 것으로 보면 될까요? 확인해주시고 답변 주시면 감사드리겠습니다 !

  • java
  • spring
  • project-reactor
  • webflux
chaelynjang 댓글 1 좋아요 1 조회수 352

부모클래스나 두개 이상의 인터페이스가 있을 때 다른 부모에 있는 메서드가 실행되는 이유

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 클래스와 인터페이스 활용 강의를 듣고 문득 하위클래스는 상위의 AbstractAnimal과 Fly인터페이스와 관련이 있다는 느낌을 받아서 다음과 같이 코드를 작성했습니다. public static void main(String[] args) { Dog dog = new Dog(); Chicken chicken = new Chicken(); Bird bird = new Bird(); AbstractAnimal bird2 = new Bird(); soundTest(dog); soundTest(chicken); soundTest(bird); flyAnimalTest(chicken); flyAnimalTest(bird); soundTest(bird2); flyAnimalTest((Fly)bird2); } private static void flyAnimalTest(Fly fly) { System.out.println("날기테스트시작"); fly.fly(); System.out.println("날기테스트종료"); } 그런데 마지막 줄 flyAnimalTest에서 bird2는 인스턴스는 Bird2지만 호출타입은 AbstractAnimal이라서 AbstractAnimal을 Fly타입에 대입할 수 있나라는 의문도 들었고 무엇보다 AbstractAnimal에는 fly()라는 메서드가 없어서 이걸 AbstractAnimal에서 찾으면 당연히 없고 상위 클래스에서 fly를 찾으려고 해도 AbstractAnimal이 최상위니까 실행이 안되겠지? 라는 생각이 들었는데 이게 맞을까요? 그리고 한가지 더 궁금한게 있습니다. (Fly) bird2를 flyAnimalTest에 넣었는데 실행이 잘 됐습니다. bird2의 호출 타입은 Abstract이고 인스턴스는 Bird인데 (Fly)를 해주면 캐스팅 되는 과정이나 메모리상에서 fly함수를 어떻게 찾아가는지 과정을 알고싶습니다. bird2를 (Bird)로 다운캐스팅한 다음 flyAnimalTest메서드의 매개변수 Fly fly에 대입된 후에 작동하는 것은 이해가 가는데 (Fly)로 캐스팅했을 때 되는 이유는 무엇인가요?

  • java
  • 객체지향
박준형 댓글 1 좋아요 0 조회수 184

cmd - gradlew 문제

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 왜 이런 오류가 발생하는 걸까요? gradlew.bat build로 해도 똑같고 gradle home도 잘 지정되어 있습니다.

  • java
  • spring
  • mvc
  • spring-boot
이윤솔 댓글 2 좋아요 0 조회수 630

강의 설정과 관련한 질문입니다.

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

강의에선 maven으로 진행된거같은데 강의에서 나오는 설정들도 함께 알아두는게 맞겠죠...? 요즘도 pom.xml이나 persistence.xml 방식을 많이 사용할까요?

  • java
  • jpa
맥스 댓글 1 좋아요 0 조회수 474

쿠키/세션은 어떻게 테스트하는지 문의드립니다!

미해결

Practical Testing: 실용적인 테스트 가이드

배경 회원가입을 할 때, 이메일로 인증한 회원만 회원가입이 진행되도록 하는 구현중에 있습니다. 그래서, 이메일로 인증한 회원에 한해서 MAIL_VERIFIED_MEMBER 세션을 만들어서 반환하고, 회원가입할 때 MAIL_VERIFIED_MEMBER 세션이 있는지 확인하고자 합니다. 그래서, 이메일로 인증한 회원에 MAIL_VERIFIED_MEMBER 세션이 잘 들어가는지 Controller 테스트를 진행하고자 하는데, 어려움을 겪어서 질문드립니다. 이메일로 인증한 회원에 MAIL_VERIFIED_MEMBER 세션을 넣어주는 API이며, 이 api 를 테스트 하고자 합니다. @PostMapping("/email/authenticate") public ApiResponse<Void> authenticateEmail(@RequestBody @Valid EmailAuthenticationRequest request, HttpServletRequest servletRequest) { // 메일 인증한 회원에게 세션을 추가한다 if (mailService.isValidMail(request.toServiceRequest())) { HttpSession session = servletRequest.getSession(); session.setAttribute(MAIL_VERIFIED_MEMBER, true); return ApiResponse.ok(); } return ApiResponse.status(HttpStatus.BAD_REQUEST); } 테스트 코드를 아래 사진처럼 짜보았습니다 . 그러자, Response should contain header 'Set-Cookie' 라는 오류와 함께 테스트가 실패하게 됩니다. Postman 으로 api 를 호출하면 Set-Cookie 헤더에 JSESSIONID 값이 잘 들어 오는 것을 확인하였습니다. 그러나, 테스트로 진행하면 JSESSIONID 도 무작위 값이 아닌 1, 2 로 들어오게 되어 'api 호출 후 세션이 생성되어 쿠키에 들어갔는지' 테스트하는데 어려움을 겪어 질문 드립니다...ㅠㅠ api 호출 후, 응답에 세션과 쿠키가 잘 생성 되었는지를 테스트하려면 어떻게 해야할까요..? andDo(print()) 에서 MockHttpServletRequest 의 Session Attrs 에는 세션 값이 왜 들어가 있을까요.. 해당 api 를 호출하면 세션이 아직 생성이 안되었을 것이라 생각했기 때문입니다.. 해당 테스트를 실행할 때의 andDo(print()) 의 결과는 다음과 같습니다. MockHttpServletRequest: HTTP Method = POST Request URI = /member/email/authenticate Parameters = {} Headers = [Content-Type:"application/json;charset=UTF-8", Content-Length:"48"] Body = {"email":"123@naver.com","authCode":"312nj5acz"} Session Attrs = {verified_member=true} MockHttpServletResponse: Status = 200 Error message = null Headers = [Content-Type:"application/json"] Content type = application/json Body = {"code":"0200","status":"OK","message":"OK","data":null} Forwarded URL = null Redirected URL = null Cookies = [] 질문이 길어 죄송합니다.. 그리고, 좋은 테스트 강의를 지식 공유 해주셔서 감사드립니다!!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
종혁 댓글 2 좋아요 0 조회수 435

Java 언어 기출문제의 변형

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요, “Java 언어 기출문제의 변형” 수업 수강 중 이해가지 않는 부분이 있어 질문 드리게 되었습니다. (4:30~) class A { A() { System.out.print(‘A’); } A(char x) { System.out.print(x); } } class B extends A { B() { super(); System.out.print(‘B’); } B(char x) { this(); System.out.print(x); } } public class Test { public static void main(String[] args) { A s1 = new A(‘X’); A s2 = new B(‘Y’); A s2 = new B(‘Y’); 이 부분을 실행할 때 부모생성자를 먼저 실행한 후 B(char x)를 실행하지 않고 B(char x)를 먼저 실행하는 이유가 궁금합니다. 동일 질문에 파라미터가 있는 것을 이미 실행했다면, 기본 생성자는 실행되지 않는다고 답변 주셨는데, 왜 이 코드에서는 파라미터가 있는 것을 실행하기 전에 부모 생성자를 먼저 실행하지 않는 것인지 궁금합니다.

  • python
  • java
  • c
  • 정보처리기사
treewhy 댓글 1 좋아요 0 조회수 175

인기 태그

인프런 TOP Writers

주간 인기글