测试 Java API 接口通常可以从单元测试、集成测试、接口(API)测试工具、自动化测试几个层面来做。下面按常见场景给你一个清晰指引。
适合:测试某个 Controller / Service / 方法是否正确
@SpringBootTest
class UserControllerTest {
@MockBean
private UserService userService;
@Autowired
private UserController userController;
@Test
void testGetUser() {
when(userService.getUser(1L)).thenReturn(new User(1L, "Tom"));
User user = userController.getUser(1L);
assertEquals("Tom", user.getName());
}
}
常用框架:
适合:直接测试 HTTP API 是否正确
@SpringBootTest
@AutoConfigureMockMvc
class UserApiTest {
@Autowired
MockMvc mockMvc;
@Test
void testGetUserApi() throws Exception {
mockMvc.perform(get("/users/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name").value("Tom"));
}
}
✅ 优点:快、稳定、适合 CI
@SpringBootTest(webEnvironment = RANDOM_PORT)
class UserApiIntegrationTest {
@Autowired
TestRestTemplate restTemplate;
@Test
void testApi() {
ResponseEntity<User> resp =
restTemplate.getForEntity("/users/1", User.class);
assertEquals(200, resp.getStatusCodeValue());
}
}
适合:开发调试、前端联调
curl -X GET http://localhost:8080/users/1
适合:测试团队 / 回归测试
常见工具:
given()
.when().get("/users/1")
.then()
.statusCode(200)
.body("name", equalTo("Tom"));
✅ 正常流程
✅ 参数缺失 / 错误
✅ 权限 / 鉴权
✅ 异常码(400 / 401 / 500)
✅ 边界值
如果你愿意,可以告诉我:
我可以直接给你可运行的示例代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。