pom.xml에 추가되어 있는 Spring Boot Starter Test dependency(의존성 라이브러리)에는 Java 기반 애플리케이션 테스팅에 필요한 JUnit, Hamcrest 및 Mockito 의존성 라이브러리가 포함되어 있어 추가적인 설정이 필요 없습니다.
다음을 수행하여 테스트 코드를 작성하고 커밋합니다.
STS에서 src/test/java 하위에 있는 패키지(package)를 선택합니다. (예 : io.infograb.api
)
File > New > Class를 선택한 다음, Name 필드에 GreetingControllerTest
을 입력하고 Finish 버튼을 클릭합니다.
GreetingControllerTest.java
파일 내용을 아래와 같이 수정합니다.
package io.infograb.api;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.hamcrest.CoreMatchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@DisplayName("Greeting test case")
@WebMvcTest(GreetingController.class)
public class GreetingControllerTest {
@Autowired
private MockMvc mockMvc;
@DisplayName("Test default greeting")
@Test
public void testDefaultGreeting() throws Exception {
this.mockMvc.perform(get("/greeting"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.content", is("Hello, World!")));
}
@DisplayName("Test greeting with query string parameter")
@Test
public void testGreetingWithParameter() throws Exception {
String name = "Jason";
this.mockMvc.perform(get("/greeting?name=" + name))
.andExpect(status().isOk())
.andExpect(jsonPath("$.content", is("Hello, Jason!")));
}
}
STS의 Package Explorer에서 GreetingControllerTest.java
를 선택하고 우클릭한 다음, 컨텍스트 메뉴에서 Run As > JUnit Test를 선택하여 테스트를 실행합니다.
아래와 같이 2개의 테스트가 에러 없이 성공으로 수행되는 것을 확인할 수 있습니다.
아래 명령을 실행하여 Git 커밋합니다.
git add .
git commit -m "Add test code"