• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@PathVariable 사용 질문

22.01.28 18:12 작성 조회수 702

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)

[질문 내용]
안녕하세요! PathVariable을 사용하다 궁금한 점이 생겨 질문 남깁니다.
변수명과 원하는 name 설정이 같으면 생략할 수 있다고 하셨는데 이를 테스트 코드로 작성 시 오류가 발생합니다.
(포스트맨으로 실행 시 성공..)
 
Controller

 

@ResponseBody
@GetMapping("/test/{id}")
public void test(@PathVariable Long id) {
        ...
}

 

Test Code

@Test
public void 테스트_코드() throws Exception {
        Long id = 1L;
        mvc.perform(get("/test/" + id))
                .andExpect(status().isOk());
}

 

Error

org.springframework.web.util.NestedServletException: Request processing failed; java.lang.IllegalArgumentException: Name for argument type [java.lang.Long] not available, and parameter name information not found in class file either. 

 

제가 조사한 바로는 아래와 같은데 (Spring 공식 문서 일부)

The matching of method parameter names to URI Template variable names can only be done if your code is compiled with debugging enabled. If you do have not debugging enabled, you must specify the name of the URI Template variable name to bind to in the @PathVariable annotation. 

 

 

debugging enabled한 compile이라는걸 이해할 수 없어 질문 납겨봅니다ㅠ.ㅠ

답변 남겨주시면 감사합니다.

답변 1

답변을 작성해보세요.

1

David님의 프로필

David

2022.01.29

안녕하세요. yeonLog님, 공식 서포터즈 David입니다.

.
동일하게 오류 재현이 안 되어 확인할 수 없어 관련 오류를 경험하신 분이 쓴 글을 첨부합니다.

https://m.blog.naver.com/sm_woo/70185755273
.
감사합니다.

 

yeon님의 프로필

yeon

2022.01.30

제가 겪는 오류랑 비슷한 상황인 것 같습니다

다만 postman이나 크롬에서 직접 접근하면 응답이 되는데 JUnit 테스트만 안됩니다.

JUnit 설정을 의심해야 하는건지.. 아니면 IntelliJ 환경 설정을 의심해야 하는건지 모르겠습니다