- 新增 AbstractAsyncQuery 基类支持异步查询操作 - 实现 AsyncQueryBus 和 IAsyncQueryBus 查询总线功能 - 添加 IAsyncQuery 接口定义异步查询契约 - 重构 CommandBus 的 SendAsync 方法移除不必要的 await - 为 AbstractAsyncCommand 添加完整 XML 文档注释 - 更新 TEST_COVERAGE_PLAN.md 反映测试覆盖率提升至 91.5%
16 KiB
GFramework.Core 模块测试覆盖详细清单
生成日期: 2026-01-18 最后更新: 2026-01-18 当前版本: Core测试覆盖率 ~93.3% (文件级别) 目标: 提升Core模块测试覆盖率至 95%+ 并补充缺失的单元测试
📊 总体统计
| 类别 | 源文件数 | 有测试文件数 | 缺失测试文件数 | 测试覆盖率 |
|---|---|---|---|---|
| 架构系统 | 6 | 4 | 1 | 83% |
| 事件系统 | 8 | 5 | 0 | 100% |
| 命令系统 | 4 | 1 | 0 | 100% |
| 查询系统 | 3 | 1 | 0 | 100% |
| 日志系统 | 5 | 2 | 0 | 100% |
| 扩展方法 | 4 | 2 | 0 | 100% |
| 状态系统 | 4 | 2 | 0 | 100% |
| IOC容器 | 1 | 1 | 0 | 100% |
| 模型系统 | 1 | 0 | 0 | 100% |
| 系统基类 | 1 | 0 | 0 | 100% |
| 对象池 | 1 | 1 | 0 | 100% |
| 属性系统 | 2 | 1 | 0 | 100% |
| 规则系统 | 1 | 0 | 0 | 100% |
| 工具类 | 1 | 0 | 1 | 0% |
| 环境系统 | 2 | 1 | 0 | 100% |
| 常量 | 2 | 0 | 2 | 0% |
| 总计 | 47 | 20 | 4 | 91.5% |
注: 标记为0个测试文件的模块通过间接测试(集成测试)实现了功能覆盖
🎯 测试补充优先级概览
| 优先级 | 文件数 | 预计测试数 | 描述 |
|---|---|---|---|
| 🔴 高优先级 | 1 | 6-8 | 核心基类直接测试 |
| 🟡 中优先级 | 2 | 6-10 | 常量验证测试 |
| 🟢 低优先级 | 1 | 4-6 | 辅助功能测试 |
| 总计 | 4 | 16-24 | - |
📋 详细源文件与测试文件对应关系
Architecture 模块 (6个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| Architecture.cs | SyncArchitectureTests.cs, AsyncArchitectureTests.cs | ✅ 98个测试 |
| ArchitectureConfiguration.cs | ArchitectureConfigurationTests.cs | ✅ 12个测试 |
| ArchitectureConstants.cs | 缺失 | ❌ 需补充 |
| ArchitectureContext.cs | ArchitectureContextTests.cs | ✅ 22个测试 |
| ArchitectureServices.cs | ArchitectureServicesTests.cs | ✅ 15个测试 |
| GameContext.cs | GameContextTests.cs | ✅ 已有测试 |
测试用例总数: 147个
Command 模块 (4个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| AbstractAsyncCommand.cs | CommandBusTests.cs (间接) | ✅ 已覆盖 |
| AbstractCommand.cs | CommandBusTests.cs (间接) | ✅ 已覆盖 |
| CommandBus.cs | CommandBusTests.cs | ✅ 4个测试 |
| EmptyCommandInput.cs | CommandBusTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 4个
Constants 模块 (2个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| ArchitectureConstants.cs | 缺失 | ❌ 需补充 |
| GFrameworkConstants.cs | 缺失 | ❌ 需补充 |
测试用例总数: 0个
Environment 模块 (2个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| DefaultEnvironment.cs | EnvironmentTests.cs | ✅ 已有测试 |
| EnvironmentBase.cs | EnvironmentTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 12个
Events 模块 (8个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| ArchitectureEvents.cs | ArchitectureEventsTests.cs | ✅ 9个测试 |
| DefaultUnRegister.cs | UnRegisterTests.cs (间接) | ✅ 已覆盖 |
| EasyEvent.cs | EventTests.cs (间接) | ✅ 已覆盖 |
| EasyEventGeneric.cs | EventTests.cs (间接) | ✅ 已覆盖 |
| EasyEvents.cs | EasyEventsTests.cs | ✅ 已有测试 |
| EventBus.cs | EventBusTests.cs | ✅ 已有测试 |
| OrEvent.cs | OrEventTests.cs | ✅ 已有测试 |
| UnRegisterList.cs | UnRegisterTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 37个
Extensions 模块 (4个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| ContextAwareExtensions.cs | ContextAwareTests.cs (间接) | ✅ 已覆盖 |
| ObjectExtensions.cs | ObjectExtensionsTests.cs | ✅ 已有测试 |
| OrEventExtensions.cs | OrEventTests.cs (间接) | ✅ 已覆盖 |
| UnRegisterListExtension.cs | UnRegisterListExtensionTests.cs | ✅ 已有测试 |
测试用例总数: 17个
IoC 模块 (1个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| IocContainer.cs | IocContainerTests.cs | ✅ 21个测试 |
测试用例总数: 21个
Logging 模块 (5个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| AbstractLogger.cs | LoggerTests.cs (间接) | ✅ 已覆盖 |
| ConsoleLogger.cs | ConsoleLoggerTests.cs | ✅ 已有测试 |
| ConsoleLoggerFactory.cs | LoggerFactoryTests.cs (间接) | ✅ 已覆盖 |
| ConsoleLoggerFactoryProvider.cs | LoggerFactoryTests.cs (间接) | ✅ 已覆盖 |
| LoggerFactoryResolver.cs | LoggerFactoryTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 69个
Model 模块 (1个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| AbstractModel.cs | SyncArchitectureTests.cs, AsyncArchitectureTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 间接覆盖
Pool 模块 (1个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| AbstractObjectPoolSystem.cs | ObjectPoolTests.cs | ✅ 6个测试 |
测试用例总数: 6个
Property 模块 (2个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| BindableProperty.cs | BindablePropertyTests.cs | ✅ 已有测试 |
| BindablePropertyUnRegister.cs | BindablePropertyTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 8个
Query 模块 (3个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| AbstractQuery.cs | QueryBusTests.cs (间接) | ✅ 已覆盖 |
| EmptyQueryInput.cs | QueryBusTests.cs (间接) | ✅ 已覆盖 |
| QueryBus.cs | QueryBusTests.cs | ✅ 3个测试 |
测试用例总数: 3个
Rule 模块 (1个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| ContextAwareBase.cs | ContextAwareTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 间接覆盖
State 模块 (4个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| ContextAwareStateBase.cs | StateMachineSystemTests.cs (间接) | ✅ 已覆盖 |
| StateChangedEvent.cs | StateMachineSystemTests.cs (间接) | ✅ 已覆盖 |
| StateMachine.cs | StateMachineTests.cs | ✅ 已有测试 |
| StateMachineSystem.cs | StateMachineSystemTests.cs | ✅ 已有测试 |
测试用例总数: 33个
System 模块 (1个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| AbstractSystem.cs | SyncArchitectureTests.cs, AsyncArchitectureTests.cs (间接) | ✅ 已覆盖 |
测试用例总数: 间接覆盖
Utility 模块 (1个源文件)
| 源文件 | 对应测试文件 | 测试覆盖 |
|---|---|---|
| AbstractContextUtility.cs | 缺失 | ❌ 需补充 |
测试用例总数: 0个
🔴 高优先级 - 核心功能缺失测试(1个文件)
1. AbstractContextUtilityTests.cs
源文件路径: GFramework.Core/utility/AbstractContextUtility.cs
优先级: 🔴 高
原因: 工具基类需要直接的单元测试以确保其基础功能正确性
需要测试的内容:
- ✅ 抽象工具类实现
- ✅ IContextUtility 接口实现
- ✅ Init 方法调用
- ✅ 日志初始化
- ✅ 上下文感知功能(SetContext, GetContext)
- ✅ 子类继承行为
- ✅ 工具初始化日志记录
- ✅ 工具生命周期完整性
预计测试数: 6-8 个
创建路径: GFramework.Core.Tests/utility/AbstractContextUtilityTests.cs
状态: ❌ 待创建
🟡 中优先级 - 重要功能缺失测试(2个文件)
2. ArchitectureConstantsTests.cs
源文件路径: GFramework.Core/architecture/ArchitectureConstants.cs
优先级: 🟡 中
原因: 验证架构相关的常量定义是否正确
需要测试的内容:
- ✅ 常量值的正确性
- ✅ 常量类型验证
- ✅ 常量可访问性
- ✅ 常量命名规范
- ✅ 架构阶段定义常量
预计测试数: 3-5 个
创建路径: GFramework.Core.Tests/architecture/ArchitectureConstantsTests.cs
状态: ❌ 待创建
3. GFrameworkConstantsTests.cs
源文件路径: GFramework.Core/constants/GFrameworkConstants.cs
优先级: 🟡 中
原因: 验证框架级别的常量定义
需要测试的内容:
- ✅ 版本号常量格式正确性
- ✅ 其他框架常量
- ✅ 常量值正确性
- ✅ 常量类型验证
- ✅ 常量可访问性
预计测试数: 3-5 个
创建路径: GFramework.Core.Tests/constants/GFrameworkConstantsTests.cs
状态: ❌ 待创建
🟢 低优先级 - 辅助功能缺失测试(可选)
当前没有低优先级的缺失测试文件
📊 测试执行计划
第一批:高优先级(1个文件,预计 15分钟)
| 序号 | 测试文件 | 预计测试数 | 优先级 | 预计时间 |
|---|---|---|---|---|
| 1 | AbstractContextUtilityTests.cs | 6-8 | 🔴 高 | 15分钟 |
小计: 6-8 个测试
第二批:中优先级(2个文件,预计 20分钟)
| 序号 | 测试文件 | 预计测试数 | 优先级 | 预计时间 |
|---|---|---|---|---|
| 2 | ArchitectureConstantsTests.cs | 3-5 | 🟡 中 | 10分钟 |
| 3 | GFrameworkConstantsTests.cs | 3-5 | 🟡 中 | 10分钟 |
小计: 6-10 个测试
第三批:可选测试(0个文件)
所有核心功能已完成测试覆盖
小计: 0 个测试
📊 最终统计
| 批次 | 文件数 | 预计测试数 | 预计时间 |
|---|---|---|---|
| 第一批 | 1 | 6-8 | 15分钟 |
| 第二批 | 2 | 6-10 | 20分钟 |
| 第三批 | 0 | 0 | 0分钟 |
| 总计 | 3 | 12-18 | 35分钟 |
🎯 目标达成路径
当前状态(2026-01-18)
- 现有测试数: 496 个
- 文件覆盖率: 91.5% (43/47个文件有测试覆盖)
- 缺失测试: 12-18 个
- 已完成文件: 43/47
补充测试完成后预计
- 预计测试数: 496 + 12-18 = 508-514 个
- 预计文件覆盖率: ~95.7% (45/47)
- 代码行覆盖率: 预计 90%+ (需通过覆盖率工具精确测量)
📝 注意事项
注释规范
- ✅ 生成的测试类需要有注释说明这个测试类具体有哪些测试
- ✅ 测试方法需要有注释说明具体测试的是什么
- ✅ 对于复杂逻辑的测试方法,需要有标准的行注释说明逻辑,不要使用行尾注释
- ✅ 对于类与方法的测试,需要标准的C#文档注释
测试隔离性
- ✅ 每个测试文件使用独立的测试辅助类(TestXxxV2, TestXxxV3等)
- ✅ 避免与现有测试类(TestSystem, TestModel)命名冲突
- ✅ 使用
[SetUp]和[TearDown]确保测试隔离 - ✅ 必要时使用
[NonParallelizable]特性
测试命名规范
- 测试类:
{Component}Tests - 测试方法:
{Scenario}_Should_{ExpectedOutcome} - 测试辅助类:
Test{Component}V{Version}
构建和验证流程
- 编写测试代码
- 运行
dotnet build验证编译 - 运行
dotnet test执行测试 - 检查测试通过率
- 修复失败或隔离性问题
代码覆盖率工具建议
建议添加 Coverlet 代码覆盖率工具以获得精确的覆盖率数据:
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
运行覆盖率命令:
dotnet test --collect:"XPlat Code Coverage"
🔄 更新日志
| 日期 | 操作 | 说明 |
|---|---|---|
| 2026-01-16 | 初始创建 | 生成原始测试覆盖清单(包含错误) |
| 2026-01-18 | 全面更新 | 重新检查框架和测试,修正以下问题: 1. 删除不存在的ContextAwareStateMachineTests.cs 2. 更新实际测试数量为496个 3. 添加新增源文件(AbstractAsyncCommand.cs等) 4. 修正文件覆盖率从41%提升至91.5% 5. 调整优先级,从26个减少到3个缺失测试文件 |
📌 待确认事项
- 确认优先级划分是否合理
- 确认执行计划是否可行
- 确认测试用例数量估算是否准确
- 确认测试隔离策略是否完整
- 添加代码覆盖率工具配置
- 确定是否需要补充间接测试为直接测试
🎉 成就解锁
已完成的测试覆盖
✅ 架构系统核心功能 - 147个测试覆盖 ✅ 事件系统完整功能 - 37个测试覆盖 ✅ 日志系统完整功能 - 69个测试覆盖 ✅ IoC容器 - 21个测试覆盖 ✅ 状态机系统 - 33个测试覆盖 ✅ 对象池系统 - 6个测试覆盖 ✅ 属性系统 - 8个测试覆盖 ✅ 扩展方法 - 17个测试覆盖 ✅ 命令查询系统 - 通过集成测试覆盖 ✅ 模型系统 - 通过架构集成测试覆盖 ✅ 系统基类 - 通过架构集成测试覆盖
测试质量指标
- 测试用例总数: 496个
- 文件级别覆盖率: 91.5%
- 支持测试的.NET版本: .NET 8.0, .NET 10.0
- 测试框架: NUnit 3.x
- 测试隔离性: 良好
- 测试组织结构: 清晰(按模块分类)
文档维护: 请在完成每个测试文件后更新本文档的"状态"字段