本规范基于项目现有代码实现,定义了单元测试和集成测试的设计原则和标准。项目目前尚未编写测试代码,本规范为未来测试开发提供指导。
pom.xml 中 未 包含常用的测试依赖(如 spring-boot-starter-test/junit-jupiter/mockito)。因此仓库内 src/test/java 目录目前为空。建议在 pom.xml 中添加以下依赖以开启测试能力:
<!-- Spring Boot Test(包含 JUnit 5、AssertJ、Mockito 等) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 可选:单独声明 JUnit Jupiter(若不使用 starter) -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<!-- 可选:Jacoco 用于覆盖率报告(在 CI 中使用插件方式更常见) -->
<!-- 在 pom.xml 中添加 jacoco-maven-plugin 的 build 插件配置 -->
添加这些依赖后,建议在本地或 CI 中运行 mvn test 并生成 coverage 报告(如使用 JaCoCo)。
UserServiceTest。should_When_Then 或 test_方法名_场景 格式。src/test/java 目录下,与主代码保持相同的包结构。mvn test 运行所有测试。目的:确保生成的 Swagger/OpenAPI 文档正确地体现接口契约,尤其是当接口返回泛型包装类(如 R<T>、分页 Page<T>)时,文档应显示具体字段结构。
建议测试项:
/v3/api-docs 或 Knife4j 的 JSON 输出上断言特定接口的 schema 中包含预期字段(例如断言某接口的 data 类型为 CheckUserBindingResponse 的 schema)。@ApiResponse / @Schema 注解的声明能被正确解析。/v3/api-docs 的基本断言纳入 CI(如果团队接受),避免接口实现与文档脱节。示例(测试思路):
/v3/api-docs,获取 JSON。exists、bindingType 等。目的:验证 API 在面对超过 JavaScript 安全整数范围(> 2^53-1)的 ID 时,前端与后端之间不会因为精度丢失而导致 CRUD 操作失败或数据不一致。
建议测试项:
id 字段在 JSON 中为字符串类型(例如使用 MockMvc / RestAssured 检查 JSON schema)。id 为字符串且值为 record.getId().toString()。示例(伪测试步骤):
id 为字符串且等于数据库 ID 的字符串表示。