测试运行体系
Wow 按运行时依赖拆分测试,让本地检查保持快速,并让容器依赖场景显式运行。
测试分层
| 分层 | Source set | 根任务 | 运行时依赖 |
|---|---|---|---|
| 本地测试 | src/test | allLocalTest | 本地安全的框架、扩展、领域和服务端测试。 |
| 契约测试 | src/contractTest | allContractTest | 本地安全的 TCK 实现者测试。 |
| 集成测试 | src/integrationTest | allIntegrationTest | 基于 Testcontainers 的中间件和端到端测试。 |
check 运行本地安全的验证任务:标准 test 任务以及已配置的契约测试。它不会启动 Docker 容器。
标准 src/test 执行统一使用 allLocalTest 根任务。
本地快速检查
./gradlew allLocalTest
./gradlew allContractTest
./gradlew check日常开发和不需要 Docker 的 Pull Request 反馈优先使用这些命令。
领域测试
领域行为测试继续使用测试套件中记录的继承式 AggregateSpec 和 SagaSpec API。它们位于各自领域模块的标准 src/test source set,并归属于本地测试层。
./gradlew allLocalTest
./gradlew :example-domain:test
./gradlew :example-transfer-domain:test
./gradlew :wow-compensation-domain:test函数式 DSL 规划在后续迁移阶段推进,因此本次测试运行分层不要求修改现有领域规格。
集成测试
./gradlew allIntegrationTest
./gradlew :wow-mongo:integrationTest
./gradlew :wow-redis:integrationTest
./gradlew :wow-r2dbc:integrationTest
./gradlew :wow-kafka:integrationTest
./gradlew :wow-elasticsearch:integrationTest
./gradlew :wow-it:integrationTest集成测试使用 Testcontainers,需要 Docker。它们有意不接入 check。
覆盖率
./gradlew codeCoverageReport
./gradlew :code-coverage-report:localCoverageReport
./gradlew :code-coverage-report:contractCoverageReport
./gradlew :code-coverage-report:integrationCoverageReport聚合覆盖率报告包含本地、契约和集成测试的执行数据。XML 报告输出到:
test/code-coverage-report/build/reports/jacoco/codeCoverageReport/codeCoverageReport.xml分层报告分别输出到匹配的 localCoverageReport、contractCoverageReport 和 integrationCoverageReport 目录。Pull Request 工作流会把这些 XML 报告分别以 local、contract 和 integration flag 上传到 Codecov。主分支的 Codecov 工作流把聚合报告作为 full 基线 flag 上传。
领域模块也继续通过 jacocoTestCoverageVerification 执行既有覆盖率阈值校验,并使用标准 test 执行数据。
基准 Smoke
./gradlew :wow-benchmarks:benchmarkSmoke基准 Smoke 用于确认选定 JMH 路径仍可编译并执行。它是 Pull Request 安全检查,不是性能报告。
快速基准测试
./gradlew :wow-benchmarks:benchmarkQuickE2E
./gradlew :wow-benchmarks:benchmarkQuickComponent
./gradlew :wow-benchmarks:benchmarkQuickInfrastructureE2E
./gradlew :wow-benchmarks:generateQuickBenchmarkReport快速基准测试使用与完整基准测试相同的 catalog,但 JMH 设置更短,适合本地快速发现回归;性能结论仍以 Full E2E 为准。 Infrastructure 基准测试需要本地 Redis 和 MongoDB 服务。
完整基准测试
./gradlew :wow-benchmarks:benchmarkFullE2E
./gradlew :wow-benchmarks:benchmarkFullComponent
./gradlew :wow-benchmarks:benchmarkFullInfrastructureE2E
./gradlew :wow-benchmarks:generateGroupedBenchmarkReportFull E2E 结果用于框架性能结论。Component 结果用于解释瓶颈,不应作为独立框架性能目标对外报告。 Infrastructure E2E 结果用于在 Redis 和 MongoDB 可用时暴露存储路径瓶颈。
CI 工作流
Pull Request 分别运行 Local Test、Contract Test、Integration Test、Benchmark Smoke 和 Static Analysis 工作流。Local Test、Contract Test 和 Integration Test 工作流分别发布分层 Codecov flag。主 Codecov 工作流在 main 或手动触发时使用 codeCoverageReport 构建完整基线。