# Pmp Java Tests

> 在用户明确要求测试工作时，为 PMP Java/Spring 行为添加、改进或运行有针对性的隔离测试。不适用于生产功能修改、只读审查或仅诊断请求；修改生产代码需获得明确批准。

- Skill: `junxian12366/pmp-java-tests` (Agent Skill)
- Install (CLI): `npx skillmds@latest add junxian12366/pmp-java-tests`
- Raw SKILL.md: https://api.skillmd.com/api/skills/junxian12366/pmp-java-tests/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: JunXian12366 (https://skillmd.com/u/junxian12366)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/junxian12366/pmp-java-tests

---


# PMP Java 测试

如果可以访问 `..\..\copilot-instructions.md`，请遵循其中的共享约束；此处引用不会自动激活这些约束。

## 操作步骤
1. 明确目标行为、测试范围和请求的模式：提出方案、编写测试或运行测试。添加测试的请求默认采用“编写并运行”；测试覆盖问题默认采用“仅提出方案”。VO、DTO、Feign client 接口、service 接口（纯字段容器或无逻辑的接口声明，不含实现类中的业务代码）不需要编写单元测试；测试应聚焦在有实际业务逻辑的类（如 ServiceImpl、Controller、工具类、Repository 自定义实现等）。
2. 阅读目标代码及其附近的现有测试。在符合现有做法的前提下，使用 JUnit 5、Mockito 和独立模式的 MockMvc；不要无必要地添加测试依赖。
3. 执行前检查安全性，可行时运行有针对性的基线检查。模拟所选代码使用的 Feign、Redis、AMQP 及其他外部交互；默认避免启动完整应用上下文。
4. 覆盖有意义的载荷契约、参数/结果传递以及相关错误路径。不要仅检查 HTTP 200 和 JSON 类型，也不要编造现有异常处理/配置契约中不存在的错误行为。
5. 编写测试后，使用精确的测试选择器运行并检查差异。核实 Java 类名，不要根据文件名猜测。
6. 遵守 SonarQube 规则，避免引入常见的可预测告警：变量/循环变量命名避免使用 `record` 等受限标识符（S6213）；日期字面量使用 `java.time.Month` 等枚举常量而非裸整数（S8694，如 `LocalDate.of(2026, Month.MARCH, 15)`）；数值断言优先使用 `isZero()`/`isPositive()` 等语义化断言而非 `isEqualTo(0)`（S5838）；单个测试方法内的断言数量应控制在 25 个以内，超出时按场景拆分为多个测试方法或提取共享的私有构造/结果获取方法（S5961）。

## 项目专用测试选择器
`src\test\java\com\spl\pmp\service\lease\notification\controller\EmailTemplateControllerTest.java` 当前声明的是包级私有类 `ApprovalFlowControllerTest`，使用 MockitoExtension、模拟的 service、注入的 controller 和独立模式的 MockMvc。使用 `mvn -Dtest=ApprovalFlowControllerTest test` 前，请重新核实类声明。不要顺手重命名现有类或文件。

## 任务边界
- 修改仅限测试范围。若生产代码缺陷或可测试性问题需要修改生产代码，应先说明原因并获得明确批准，再进行修改。
- 在“仅提出方案”模式下，不得编辑或执行。在“仅运行”模式下，不得编辑。
- 不得通过弱化断言来掩盖失败，也不得添加真实服务的凭据。
- 编写/修改代码时不要自动添加注释或 `@Schema(description = ...)` 等接口文档注解；仅在用户明确要求时才添加。

## 证据与完成标准
列出测试场景、测试文件、实际执行的完整命令及结果，以及受阻或跳过的覆盖项。提出的测试不等于已经执行的测试。完成任务需交付所请求范围的测试并通过针对性检查；否则，应明确记录阻碍并标明未验证状态。

