ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. 스프링부트와 AWS - 테스트 코드 작성해보기
    실습/AWS 2021. 4. 8. 12:48

    우리가 보통 코딩을 처음 배울 때는 직접 눈으로 확인할 수 있는 동작 구현을 해본다.

     

    이러한 방법은 아주 간단한 구조의 코드나 개인 프로젝트를 할 때는 유용하다.

     

    예를 들어 연습삼아 10줄도 안되는 코드를 실행하는데 테스트를 하는건 오히려 낭비에 가깝다.

     

    하지만 프로젝트의 규모가 커지고 실제로 운용 중인 코드를 다뤄야 할 때는 이야기가 다르다.

     

    매번 프로젝트를 수정할 때마다 눈으로 확인하는 일은 수정할 것도 많고 의외로 시간도 많이든다.

     

    이에 테스트 코드를 작성하는 습관을 들이는 것은 굉장히 중요하다.

     

    다만 해당 실습에서는 해당 파트에서만 테스트 코드에 대해 설명하고

     

    그 뒤 테스트 부분은 가능하면 쓰겠지만...부득이하게 길어지면 생략할 수도 있다.

     

    아무래도 내가 직접 책 쓰는 것도 아니다보니 너무 길어질 수 있어서 그렇다.

     

    1. Application 클래스 작성하기

     

    우선 프로젝트에서 src/main/java 폴더 내에 새로운 패키지를 생성해준다.

     

     

     

    버튼을 누르면 이름을 정해야한다.

     

    위처럼 초기 프로젝트 입력시 입력한 GroupId에 springboot를 붙여서 생성한다.

     

    참고로 여기서 .의 의미는 하위 폴더를 만들겠다는 뜻이다.

     

     

     

    패키지를 만들면 위와 같이 패키지가 만들어진다.

     

     

     

     

    이 상태에서 프로젝트 상단의 톱니 바퀴 버튼을 누른뒤 위의 옵션을 해제한다.

     

    그러면 위와 같이 점 갯수에 맞춰 폴더가 만들어진 것을 볼 수 있다.

     

     

     

     

    패키지를 다 생성하고 나선 해당 패키지 안에 Java 클래스 파일을 생성한다.

     

    이때 클래스의 이름은 Application으로 정한다.

     

     

     

    그 다음 클래스 내에 코드를 작성해준다.

     

    Application 클래스는 해당 프로젝트의 가장 메인이 되는 클래스다.

     

    @SpringBootApplication 어노테이션때문에 프로젝트를 실행하면 해당 클래스의 코드를

     

    가장 처음으로 읽기 시작한다.

     

    그래서 해당 클래스는 항상 해당 프로젝트의 최상단에 위치해야 한다.

     

    해당 클래스가 실행되면 main클래스 안의 SpringApplication.run 코드가 실행된다.

     

    이 코드를 실행하면 애플리케이션 실행시 애플리케이션 내부에서 WAS를 실행하게 된다.

     

    이로인해 서버가 늘어나도 무리없이 애플리케이션 구동이 가능하다.

     

    여튼 이제부턴 Application 클래스를 해당 프로젝트의 최상단에 두게된다.

     

    그리고 나머지 코드를 가진 자바 파일들은 해당 패키지 하위에 작성하게 된다.

     

    2. Controller패키지와 HelloController 클래스 작성

     

    Application 클래스 작성 후 해당 패키지 하위에 controller 패키지를 만든다.

     

     

     

     

    패키지를 생성하면 해당 패키지 내에 HelloController라는 클래스를 만든다.

     

     

     

    클래스 작성 이후에 위와 같은 코드를 작성해준다.

     

    간단하게 설명하면 "/hello"라는 url로 요청이 들어오면 "hello"라는 문장을 반환해주는 메서드다.

     

    이제 이 코드가 제대로 작동하는지 검증하기 위한 테스트 코드를 만들어보자.

     

    3. HelloController에 대한 테스트 코드 작성

     

     

    이번에는 test/java 패키지 내에 main/java 패키지에 만들었던 것과 같은 똑같은 패키지를 만든다.

     

     

     

    그리고 나서 패키지 안에 controller 패키지를 추가로 만들어준다.

     

    그리고 패키지 안에 HelloControllerTest 클래스를 작성해준다.

     

     

     

    아마 여기까지 전부다 마쳤다면 위와 같은 프로젝트 구조가 된다.

     

    테스트 코드는 테스트 패키지 안에 작성해야하며 패키지 구조도 똑같이 맞춰줘야 한다.

     

     

     

    패키지와 클래스까지 만들었다면 위와 같이 코드를 작성해준다.

     

    해당 코드를 설명하자면 다음과 같다.

     

    - @Autowired : 스프링이 관리하는 bean를 주입 받음

    - MockMvc : 테스트를 위해 제공되는 클래스. 배포하지 않고도 코드 테스트가 가능

    - mvc.perform(get("/hello")) : /hello 주소로 http get 요청을 시도함

    - .andExpect(status().isOk()) : get 요청에 따른 응답 코드 확인. 여기서 ok는 200번을 의미함.

    - .andExpect(content().string(hello)) : get 요청에 따른 응답 확인. 여기선 hello가 응답되어야 정상이 됨.

     

    위 코드 설명을 보면 알겠지만 테스트 코드는 별도의 서버 배포 없이

     

    내부적으로 반응을 확인할 수 있도록 만들어졌다.

     

    MockMvc 클래스를 이용해서 요청을 주고 받으며 기대하던 결과가 나오는지 확인하는 것이다.

     

     

     

    이제 실제로 테스트를 해보자. 테스트는 hello_test 메서드 왼편에 초록생 재생버튼을 누르면 된다.

     

     

    테스트를 마치면 하단에 테스트 결과가 나온다.

     

    위와 같이 지금까지 작성한 메서드가 잘 작동한다는 것을 보여준다.

     

    만약 실제로 눈으로 결과를 보고 싶다면 아래와 같이 진행한다.

     

     

     

     

    Application 클래스로 이동해서 메인 클래스 왼편의 초록 재생 버튼을 클릭해서 Run을 실행한다.

     

     

    어플리케이션이 구동되고 나서 브라우저를 켜고 localhost:8080/hello로 접속한다.

     

    그러면 위와 같이 hello 문장이 반환되는 것을 볼 수 있다.

Designed by Tistory.