在Spring Boot中測試endpoints,通常使用Spring Boot Test模塊和相關的測試工具
確保你的項目中包含了以下依賴:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
在src/test/java
目錄下,為你的控制器創建一個測試類。例如,如果你的控制器名為UserController
,則創建一個名為UserControllerTest
的測試類。
使用@RunWith(SpringRunner.class)
和@SpringBootTest
注解你的測試類,這將啟動一個Spring Boot應用程序實例,并提供自動配置的測試環境。
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserControllerTest {
// ...
}
使用@Autowired
注解注入你需要測試的控制器、服務或其他組件。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
@RunWith(SpringRunner.class)
@SpringBootTest
@WebMvcTest(UserController.class)
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private UserController userController;
// ...
}
使用mockMvc
對象發送HTTP請求,并使用斷言驗證返回的結果是否符合預期。
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
// ...
public class UserControllerTest {
// ...
@Test
public void testGetUser() throws Exception {
mockMvc.perform(get("/users/{id}", 1))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1))
.andExpect(jsonPath("$.name").value("John Doe"));
}
@Test
public void testCreateUser() throws Exception {
String json = "{\"name\":\"Jane Doe\", \"email\":\"jane.doe@example.com\"}";
mockMvc.perform(post("/users")
.contentType(MediaType.APPLICATION_JSON)
.content(json))
.andExpect(status().isCreated())
.andExpect(header().string("Location", containsString("/users/")));
}
// ...
}
使用IDE或Maven命令行工具運行測試。例如,在命令行中輸入以下命令:
mvn test
這將運行你的測試并報告結果。如果所有測試都通過,那么你的endpoints應該按預期工作。如果有任何失敗的測試,請檢查代碼以找到問題所在,并進行修復。