개나소나고생
7k
2021-02-15 08:26:54
3
191

junit 테스트 코드 작성 관련 문의


안녕하세요. 최근 junit관련해서 학습하면서 실무에 적용해보고 있습니다.

실무 과정에서 적용 중 2가지 사항에 대해 문의 사항이 있어서 글을 올립니다.

1.컨트롤러 영역에서 @Test 어노테이션 구성된 메서드를 호출 할 수 있는 방법이 있는지 궁금합니다.

2.MockHttpServletResponse 클래스를 통해 http status 302인 상태에서 랜더링 되는 html코드를 보여주고 싶은데..테스트 코드를 작성후 print메서드를 통해 출력했더니 body영역이 없는것으로 출력됩니다. http status 가 302인 상태인 경우에는 랜더링 코드 영역에 대해서 출력이 불가능한지 궁금합니다.

0
  • 답변 3

  • Dierslair
    5k
    2021-02-15 09:14:22

    302응답시 Location 헤더에 포함된 주소로 이동한 결과를 보여주는 것이기 때문에 302응답은 body가 없습니다. 

  • yeori
    2k
    2021-02-15 09:39:53

    1. 컨트롤러영역에서 @Test 메서드 호출

    일반적으로 벌어지는 상황이 아닌데, 만일 프로덕션코드(컨트롤러영역)가 테스트코드(@Test)를 호출해야한다면 테스트 영역의 코드가 프로덕션 영역으로 옮겨가야 한다는 뜻일겁니다. 한마디로 테스트코드가 아니라 테스트되어야 하는 프로덕션 코드라는 뜻이죠.

    자세한 상황을 모르니 왜 역으로 참조해야되는지는 모르겠습니다

    2. 302 응답

    일반적으로 302응답은 서버가 브라우저(클라이언트)한테 "저쪽으로 다시 가봐라"라는 뜻입니다. 응답코드가 302이면 http 응답 헤더에 다시 이동할 리소스 주소를 명시해줍니다(반드시)

    HTTP/1.1 302 FOUND
    ...
    ...
    location: http://옮겨갈.주소...

    그러니까 302응답을 테스트한다면 응답에 첨부된 HTML이 아니라 location 헤더값을 테스트하는게 일반적입니다.

    그리고 location 헤더의 주소로 다시 요청을 보내서 되돌아오는 응답의 body를 따내서 html 구조를 테스트 한다면, 이거는 가능할듯 하네요


  • 개나소나고생
    7k
    2021-02-15 12:26:46

    1번사항.말씀하신대로 테스트되어야 하는 프로덕션 코드가 맞습니다. 역으로 참조할려는 이유는 별거 없습니다. 질문한 내용처럼..되는지 유무에 대한 확인 차원에서의 궁금증 이었습니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.