<!-- generated-by: gsd-doc-writer -->
# 测试与交付证据

规则 `CORE-TEST-001`。当前测试使用 JUnit Jupiter、Spring Test 与响应式测试工具，依赖版本由 parent/POM 解析。业务场景详细要求见[业务集成测试指南](../project-development/business-integration-test-guide.md)。

## 分层报告

| 层级 | 证明什么 | 不单独证明什么 |
| --- | --- | --- |
| 编译 | 类型、依赖、生成源码可用 | 业务行为正确 |
| 契约/单元 | 能力组合、生命周期、上下文、算法 | 真实 SQL、Spring 装配、权限代理 |
| 持久化集成 | 真数据库映射、约束、过滤、事务 | HTTP 安全与前端流程 |
| 应用集成 | Spring 装配、实际 HTTP、身份与权限 | 浏览器操作完成 |
| 前端 E2E | 实际用户流程 | 所有后端边界组合 |

测试中 `new Service(...)` 不会自动具备事务或安全代理；Map/mock 仓储不证明真实数据库行为。不要根据类名含 `Integration` 就推断覆盖范围。

## Core 验证命令

工作目录为 Core 根目录；工具链见[环境准备](../getting-started/prerequisites.md)。运行所有 Core 测试：

```bash
mvn test
```

与文档关键行为相关的定向入口：

```bash
mvn -pl ineed-core-tests/ineed-core-test-webmvc,ineed-core-tests/ineed-core-test-webflux \
  -am '-Dtest=*BusinessChainTest,*Tenant*Test,*ServiceCache*Test,*IntegrationEvent*Test' \
  -Dsurefire.failIfNoSpecifiedTests=false test
```

运行基础契约模块：

```bash
mvn -pl ineed-core-base -am test
```

`-Dsurefire.failIfNoSpecifiedTests=false` 允许上游模块没有匹配类；执行后仍须汇总目标 `target/surefire-reports/TEST-*.xml`，确认目标测试实际运行，不能接受零测试的假通过。避免把历史报告混入本次统计。

## 新测试应该断言什么

按业务结果命名用例，正向场景与错误路径配对。多表动作验证回滚与最终持久化；关系操作验证读取、替换、清空和删除过滤；租户与权限验证拒绝后无数据变化。

响应式使用 StepVerifier 或明确的订阅断言：创建 Publisher 不提前执行，订阅后完成或错误。同步与响应式场景表达同一业务语义。

修改小范围文档或风格不要求全量业务回归；修改公共生命周期、租户、事务或接口时扩大到受影响的框架与业务验证。

## CI 与覆盖率

本仓当前未发现已纳入版本控制的 `.github/workflows` CI 工作流，也未在本次核查范围发现统一覆盖率阈值；不虚构百分比门槛。团队接入 CI 时先执行文档检查、样例所在模块编译和必要行为测试，再按环境提供数据库层验证。

本轮执行证据见[验证记录](../maintenance/verification-2026-09-19.md)。部署环境和未执行的数据库/HTTP 场景必须单独标注。
