Junit을 이용한 단위 테스트

신광진·2021년 5월 9일
0
post-thumbnail

Controller 작성

우선 테스트를 위해 src/main/java하위에 패키지에 자신의 패키지를 생성하고 간단한 Controller를 하나 생성한다.

Test코드 작성

테스트 코드를 작성하는 곳은 src/test/java하위에 패키지를 생성하고 클래스를 생성한다.
그 후 아래와 같이 테스트 코드를 작성하고 hello가_리턴된다() 왼쪽에 있는 실행버튼을 클릭하여 실행한다.

위에서 만든 Controller의 경로와 동일하게 패키지 구조를 생성해야 합니다. 예를들어 Controller의 경로가 src/main/java/web/이라면 테스트 코드를 작성하기 위한 클래스의 경로는 src/test/java/web/이어야 합니다.

  • @RunWith(SpringRunner.class)
    • 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행시킨다.
    • 여기서는 SpringRunner라는 스프링 실행자를 이용한다.
    • SpringBootTest와 JUnit을 연결해주는 역할을 한다.
  • @WebMvcTest
    • Web에 집중하여 테스트 할 수 있는 Annotation이다.
    • @Controller, @ControllerAdvice 등을 사용할 수 있다.
    • @Service, @Component, @Repository 등은 사용할 수 없다.
  • private MockMvc mvc
    • 웹 API를 테스트할 때 사용한다.
    • 이 클래스를 통해 GET, POST 등에 대한 API를 테스트 할 수 있다.
  • mvc.perform(get("hello))
    • McokMvc를 통해 /hello주소로 HTTP GET요청을 보낸다.
  • .andExpect(status().isOk())
    • mvc.perform의 결과를 검증한다.
    • HTTP Header의 Status를 검증한다.
    • 여기서는 Status가 OK(200)인지 검증한다.
  • .andExpect(content().string(hello))
    • mvc.perform의 결과를 검증한다.
    • 응답 본문의 내용을 검증한다.

실행결과가 위와 같이 나온다면 테스트가 정상적으로 진행된 것입니다.
(콘솔 좌측 상단에 Test Passed라는 문구가 출력되어야 합니다)

ERROR

IDE를 이클립스를 이용하다가 최근에 인텔리제이로 전환하고 있는데 테스트를 하던 중 위와같은 에러가 발생했다.
나처럼 인텔리제이가 아직 어색한 사람이 위와 같은 에러를 만날 수 있다고 생각하여 해결방법을 공유하려고 한다.

  • Settings(Crlt + Alt + S) - build tools - Gradle로 이동
  • 위 화면에서 Build and run usingRun tests using이 Gradle로 설정되어 있는데 두 개 모두 intellij IDEA로 변경한다.
profile
이거 왜안되냐

0개의 댓글