做 Java 开发 3 年了, 每次想要测试开发完的接口总是有点头疼, 要复制 url, 又要写测试参数, 为了解决这些烦恼, 我开发了一个快速测试的工具, 直接面向 controller 测试. 项目地址 https://github.com/cweijan/http-test
example:
<dependency>
<groupId>io.github.cweijan</groupId>
<artifactId>http-test</artifactId>
<version>0.0.3</version>
<scope>test</scope>
</dependency>
@RestController
@RequestMapping("/user")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping("/save")
public UserVo saveUser(@RequestBody SaveUserDTO saveuserDTO) {
return userService.saveUser(saveuserDTO);
}
@PostMapping("/update")
public UserVo updateUser(@RequestBody UpdateUserDTO updateuserDTO) {
return userService.updateUser(updateuserDTO);
}
@GetMapping("/{userId}")
public UserVO getUser(@PathVariable Integer userId) {
return userService.getUser(userId);
}
@DeleteMapping("/{userId}")
public void deleteByUserId(@PathVariable Integer userId) {
userService.deleteByUserId(userId);
}
}
import io.github.cweijan.mock.Asserter;
import io.github.cweijan.mock.jupiter.HttpTest;
import io.github.cweijan.mock.request.Generator;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeAll;
import javax.annotation.Resource;
@HttpTest(host = "localhost",port = 8080)
public class UserControllerTest {
//仅支持注入 controller 和 feignClient
@Resource
private UserController userController;
@BeforeAll
public static void addToken(){
//配置全局拦截器
Mocker.addRequestInterceptor(template -> {
template.header("token","c2f678d4873c472c8f99940e8cf39fe4");
});
}
// 注意, 必须使用 junit5: org.junit.jupiter.api.Test
@Test
void saveUser() {
//创建 mock 数据
SaveUserDTO saveUserDTO = Generator.request(SaveUserDTO.class);
// 当调用方法时会直接发送 http 请求
UserVo userVo=userController.saveUser(saveUserDTO);
UserVO user = userController.getUser(userVo.getId());
Asserter.assertSame(userVo,user);
userController.deleteByUserId(userVo.getId());
}
}
SpringBootTest 也可以实现该测试, 但需要启动 spring 容器, 耗时实在太久, 该方式毫秒级即可运行完测试.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.