GFramework/GFramework.Core.Tests/TEST_COVERAGE_PLAN.md
GeWuYou 42ddb80248 feat(core): 添加异步查询系统并优化命令系统实现
- 新增 AbstractAsyncQuery 基类支持异步查询操作
- 实现 AsyncQueryBus 和 IAsyncQueryBus 查询总线功能
- 添加 IAsyncQuery 接口定义异步查询契约
- 重构 CommandBus 的 SendAsync 方法移除不必要的 await
- 为 AbstractAsyncCommand 添加完整 XML 文档注释
- 更新 TEST_COVERAGE_PLAN.md 反映测试覆盖率提升至 91.5%
2026-01-18 20:39:23 +08:00

16 KiB
Raw Blame History

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#文档注释

测试隔离性

  1. 每个测试文件使用独立的测试辅助类TestXxxV2, TestXxxV3等
  2. 避免与现有测试类TestSystem, TestModel命名冲突
  3. 使用 [SetUp][TearDown] 确保测试隔离
  4. 必要时使用 [NonParallelizable] 特性

测试命名规范

  • 测试类:{Component}Tests
  • 测试方法:{Scenario}_Should_{ExpectedOutcome}
  • 测试辅助类:Test{Component}V{Version}

构建和验证流程

  1. 编写测试代码
  2. 运行 dotnet build 验证编译
  3. 运行 dotnet test 执行测试
  4. 检查测试通过率
  5. 修复失败或隔离性问题

代码覆盖率工具建议

建议添加 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
  • 测试隔离性: 良好
  • 测试组织结构: 清晰(按模块分类)

文档维护: 请在完成每个测试文件后更新本文档的"状态"字段