GFramework/GFramework.Core.Tests/TEST_COVERAGE_PLAN.md
GeWuYou 66d4c8be11 docs(TEST_COVERAGE_PLAN): 更新测试覆盖清单文档
- 添加了清单更新部分,说明测试完成后需要更新进度
- 格式化文档开头的空行调整
- 新增更新日志章节
- [skip ci]
2026-01-16 15:47:59 +08:00

23 KiB
Raw Blame History

GFramework.Core 模块测试覆盖详细清单

生成日期: 2026-01-16 最后更新: 2026-01-16 当前版本: Core测试覆盖率 ~47% 目标: 提升Core模块测试覆盖率至 85%+


📊 总体统计

类别 源文件数 有测试文件数 缺失测试文件数 测试覆盖率
架构系统 6 1 5 17%
事件系统 7 4 3 57%
命令系统 3 1 2 33%
查询系统 3 1 2 33%
日志系统 5 3 2 60%
扩展方法 4 2 2 50%
状态系统 4 2 2 50%
IOC容器 1 1 0 100%
模型系统 1 0 1 0%
系统基类 1 0 1 0%
对象池 1 1 0 100%
属性系统 2 1 1 50%
工具类 1 0 1 0%
环境系统 2 1 1 50%
常量 1 0 1 0%
总计 44 18 26 41%

🎯 测试补充优先级概览

优先级 文件数 预计测试数 描述
🔴 高优先级 10 99-124 核心功能和关键路径
🟡 中优先级 12 71-96 重要功能和扩展
🟢 低优先级 4 10-16 辅助功能和常量
总计 26 180-236 -

🔴 高优先级 - 核心功能缺失测试10个文件

1. ArchitectureConfigurationTests.cs

源文件路径: GFramework.Core/architecture/ArchitectureConfiguration.cs

需要测试的内容:

  • 构造函数默认值
  • LoggerProperties 默认配置ConsoleLoggerFactoryProvider + Info级别
  • ArchitectureProperties 默认配置AllowLateRegistration=false, StrictPhaseValidation=true
  • 自定义配置替换
  • LoggerProperties 独立修改
  • ArchitectureProperties 独立修改
  • IArchitectureConfiguration 接口实现验证

预计测试数: 8-10 个

实际测试数: 12 个

优先级: 🔴

创建路径: GFramework.Core.Tests/architecture/ArchitectureConfigurationTests.cs

状态: 已创建


2. ArchitectureContextTests.cs

源文件路径: GFramework.Core/architecture/ArchitectureContext.cs

需要测试的内容:

  • 构造函数参数验证所有5个参数
  • 构造函数空参数异常
  • SendQuery 方法 - 正常查询发送
  • SendQuery 方法 - 空查询异常
  • SendCommand 方法 - 正常命令发送
  • SendCommand 方法 - 空命令异常
  • SendCommand_WithResult 方法 - 正常命令发送
  • SendCommand_WithResult 方法 - 空命令异常
  • SendEvent 方法 - 正常事件发送
  • SendEvent_WithInstance 方法 - 正常事件发送
  • SendEvent_WithInstance 方法 - 空事件异常
  • GetSystem 方法 - 获取已注册系统
  • GetSystem 方法 - 获取未注册系统
  • GetModel 方法 - 获取已注册模型
  • GetModel 方法 - 获取未注册模型
  • GetUtility 方法 - 获取已注册工具
  • GetUtility 方法 - 获取未注册工具
  • GetEnvironment 方法 - 获取环境对象

预计测试数: 15-20 个

实际测试数: 22 个

优先级: 🔴

创建路径: GFramework.Core.Tests/architecture/ArchitectureContextTests.cs

状态: 已创建

注意: ArchitectureContext 不包含 RegisterSystem/RegisterModel/RegisterUtility 方法,这些方法是 Architecture 类的职责


3. ArchitectureServicesTests.cs

源文件路径: GFramework.Core/architecture/ArchitectureServices.cs

需要测试的内容:

  • 服务容器初始化
  • 所有服务实例创建Container, EventBus, CommandBus, QueryBus
  • SetContext 方法 - 设置上下文
  • SetContext 方法 - 重复设置上下文
  • GetContext 方法 - 获取已设置上下文
  • GetContext 方法 - 未设置上下文时返回null
  • 上下文传播到容器
  • IArchitectureServices 接口实现验证
  • 服务独立性验证(多个实例)

预计测试数: 10-12 个

实际测试数: 15 个

优先级: 🔴

创建路径: GFramework.Core.Tests/architecture/ArchitectureServicesTests.cs

状态: 已创建


4. ArchitectureEventsTests.cs

源文件路径: GFramework.Core/events/ArchitectureEvents.cs

需要测试的内容:

  • ArchitectureLifecycleReadyEvent 事件触发
  • ArchitectureDestroyingEvent 事件触发
  • ArchitectureDestroyedEvent 事件触发
  • ArchitectureFailedInitializationEvent 事件触发
  • 事件的参数传递
  • 事件的订阅和取消订阅
  • 事件顺序验证LifecycleReady -> Destroying -> Destroyed

预计测试数: 8-10 个

实际测试数: 9 个

优先级: 🔴

创建路径: GFramework.Core.Tests/events/ArchitectureEventsTests.cs

状态: 已创建


5. AbstractCommandTests.cs

源文件路径: GFramework.Core/command/AbstractCommand.cs

需要测试的内容:

  • 抽象命令的基础实现
  • Execute 方法调用
  • Execute 方法的异常处理
  • 上下文感知功能SetContext, GetContext
  • 日志功能Logger属性
  • 子类继承行为验证
  • 命令执行前日志记录
  • 命令执行后日志记录
  • 错误情况下的日志记录

预计测试数: 8-10 个

优先级: 🔴

创建路径: GFramework.Core.Tests/command/AbstractCommandTests.cs

状态: 待创建


6. AbstractQueryTests.cs

源文件路径: GFramework.Core/query/AbstractQuery.cs

需要测试的内容:

  • 抽象查询的基础实现
  • Do 方法调用
  • Do 方法的异常处理
  • 上下文感知功能SetContext, GetContext
  • 日志功能Logger属性
  • 子类继承行为验证
  • 查询执行前日志记录
  • 查询执行后日志记录
  • 返回值类型验证
  • 错误情况下的日志记录

预计测试数: 8-10 个

优先级: 🔴

创建路径: GFramework.Core.Tests/query/AbstractQueryTests.cs

状态: 待创建


7. AbstractLoggerTests.cs

源文件路径: GFramework.Core/logging/AbstractLogger.cs

需要测试的内容:

  • 抽象日志器的基础实现
  • Trace 级别方法(所有重载)
  • Debug 级别方法(所有重载)
  • Info 级别方法(所有重载)
  • Warn 级别方法(所有重载)
  • Error 级别方法(所有重载)
  • Fatal 级别方法(所有重载)
  • IsTraceEnabled 方法
  • IsDebugEnabled 方法
  • IsInfoEnabled 方法
  • IsWarnEnabled 方法
  • IsErrorEnabled 方法
  • IsFatalEnabled 方法
  • IsEnabledForLevel 方法
  • Name 方法
  • 异常处理和日志记录
  • 格式化字符串处理
  • 子类继承行为验证

预计测试数: 12-15 个

优先级: 🔴

创建路径: GFramework.Core.Tests/logging/AbstractLoggerTests.cs

状态: 待创建


8. ContextAwareStateMachineTests.cs

源文件路径: GFramework.Core/state/ContextAwareStateMachine.cs

需要测试的内容:

  • 作为 ISystem 的集成测试
  • Init 方法 - 初始化上下文感知状态
  • Init 方法 - 设置Context属性
  • Destroy 方法 - 清理状态
  • OnArchitecturePhase 方法 - 接收架构阶段
  • 上下文感知状态初始化
  • 状态变更事件发送
  • SetContext 方法
  • GetContext 方法
  • ISystem 接口实现验证
  • 与 EventBus 的集成测试
  • 多状态注册和切换
  • 状态机生命周期完整性

预计测试数: 12-15 个

实际测试数: 12 个

优先级: 🔴

创建路径: GFramework.Core.Tests/state/ContextAwareStateMachineTests.cs

状态: 已创建


9. AbstractModelTests.cs

源文件路径: GFramework.Core/model/AbstractModel.cs

需要测试的内容:

  • 抽象模型的基础实现
  • IModel 接口实现验证
  • Init 方法调用
  • Destroy 方法调用
  • 上下文感知功能SetContext, GetContext
  • 日志功能Logger属性
  • 子类继承行为验证
  • 模型初始化日志记录
  • 模型销毁日志记录
  • 模型生命周期完整性

预计测试数: 8-10 个

优先级: 🔴

创建路径: GFramework.Core.Tests/model/AbstractModelTests.cs

状态: 待创建


10. AbstractSystemTests.cs

源文件路径: GFramework.Core/system/AbstractSystem.cs

需要测试的内容:

  • 抽象系统的基础实现
  • ISystem 接口实现验证
  • Init 方法调用
  • Destroy 方法调用
  • 上下文感知功能SetContext, GetContext
  • 日志功能Logger属性
  • 架构阶段感知OnArchitecturePhase
  • 子类继承行为验证
  • 系统初始化日志记录
  • 系统销毁日志记录
  • 架构阶段变化响应
  • 系统生命周期完整性

预计测试数: 10-12 个

优先级: 🔴

创建路径: GFramework.Core.Tests/system/AbstractSystemTests.cs

状态: 待创建


🟡 中优先级 - 重要功能缺失测试12个文件

11. AbstractObjectPoolSystemTests.cs

源文件路径: GFramework.Core/pool/AbstractObjectPoolSystem.cs

当前状态: ⚠️ 已有 ObjectPoolTests.cs但可能需要补充抽象类的测试

需要测试的内容:

  • 抽象对象池基类实现
  • IObjectPoolSystem 接口实现验证
  • GetObject 方法 - 获取对象
  • GetObject 方法 - 空池处理
  • ReturnObject 方法 - 返回对象
  • ReturnObject 方法 - 重复返回
  • 对象池容量管理
  • 对象复用逻辑
  • 对象池生命周期
  • 对象池扩容机制

预计测试数: 8-10 个

优先级: 🟡

创建路径: GFramework.Core.Tests/pool/AbstractObjectPoolSystemTests.cs

状态: 待创建


12. DefaultUnRegisterTests.cs

源文件路径: GFramework.Core/events/DefaultUnRegister.cs

需要测试的内容:

  • UnRegister 方法的实现
  • 事件订阅的取消
  • 资源清理
  • 多次调用UnRegister
  • UnRegister后的事件处理

预计测试数: 4-6 个

优先级: 🟡

创建路径: GFramework.Core.Tests/events/DefaultUnRegisterTests.cs

状态: 待创建


13. EasyEventGenericTests.cs

源文件路径: GFramework.Core/events/EasyEventGeneric.cs

需要测试的内容:

  • 泛型事件的基本功能
  • 事件发送和接收
  • 订阅和取消订阅
  • 泛型类型约束
  • 不同泛型类型的独立性
  • 泛型事件的序列化(如果需要)

预计测试数: 6-8 个

优先级: 🟡

创建路径: GFramework.Core.Tests/events/EasyEventGenericTests.cs

状态: 待创建


14. ConsoleLoggerFactoryProviderTests.cs

源文件路径: GFramework.Core/logging/ConsoleLoggerFactoryProvider.cs

需要测试的内容:

  • ConsoleLogger 创建
  • 最小日志级别设置
  • LoggerFactoryProvider 接口实现
  • 不同日志名称的Logger创建
  • Logger实例唯一性

预计测试数: 4-6 个

优先级: 🟡

创建路径: GFramework.Core.Tests/logging/ConsoleLoggerFactoryProviderTests.cs

状态: 待创建


15. LoggerFactoryResolverTests.cs

源文件路径: GFramework.Core/logging/LoggerFactoryResolver.cs

需要测试的内容:

  • 全局工厂提供程序设置
  • 获取默认提供程序
  • 空提供程序处理
  • 提供程序替换
  • 线程安全性
  • 多次设置提供程序

预计测试数: 5-8 个

优先级: 🟡

创建路径: GFramework.Core.Tests/logging/LoggerFactoryResolverTests.cs

状态: 待创建


16. ContextAwareExtensionsTests.cs

源文件路径: GFramework.Core/extensions/ContextAwareExtensions.cs

需要测试的内容:

  • GetContext 扩展方法
  • SetContext 扩展方法
  • GetLogger 扩展方法
  • GetContainer 扩展方法
  • GetEventBus 扩展方法
  • GetCommandBus 扩展方法
  • GetQueryBus 扩展方法
  • 扩展方法对null的处理
  • 多次调用扩展方法

预计测试数: 10-12 个

优先级: 🟡

创建路径: GFramework.Core.Tests/extensions/ContextAwareExtensionsTests.cs

状态: 待创建


17. OrEventExtensionsTests.cs

源文件路径: GFramework.Core/extensions/OrEventExtensions.cs

需要测试的内容:

  • Or 操作符重载
  • Or 事件创建
  • 事件组合逻辑
  • 多个事件合并
  • Or事件的订阅和取消订阅
  • Or事件的触发

预计测试数: 6-8 个

优先级: 🟡

创建路径: GFramework.Core.Tests/extensions/OrEventExtensionsTests.cs

状态: 待创建


18. ContextAwareStateBaseTests.cs

源文件路径: GFramework.Core/state/ContextAwareStateBase.cs

需要测试的内容:

  • 抽象状态基类实现
  • 上下文感知功能SetContext, GetContext
  • 状态生命周期OnEnter, OnExit
  • 日志功能Logger属性
  • 子类继承行为
  • 状态转换规则
  • 状态生命周期完整性

预计测试数: 8-10 个

优先级: 🟡

创建路径: GFramework.Core.Tests/state/ContextAwareStateBaseTests.cs

状态: 待创建


19. StateChangedEventTests.cs

源文件路径: GFramework.Core/state/StateChangedEvent.cs

需要测试的内容:

  • OldState 属性设置和获取
  • NewState 属性设置和获取
  • 空状态处理
  • 事件的初始化
  • 事件的不可变性(如果适用)

预计测试数: 4-6 个

优先级: 🟡

创建路径: GFramework.Core.Tests/state/StateChangedEventTests.cs

状态: 待创建


20. AbstractContextUtilityTests.cs

源文件路径: GFramework.Core/utility/AbstractContextUtility.cs

需要测试的内容:

  • 抽象工具类实现
  • IContextUtility 接口实现
  • Init 方法调用
  • 日志初始化
  • 上下文感知功能SetContext, GetContext
  • 子类继承行为
  • 工具初始化日志记录
  • 工具生命周期完整性

预计测试数: 6-8 个

优先级: 🟡

创建路径: GFramework.Core.Tests/utility/AbstractContextUtilityTests.cs

状态: 待创建


21. BindablePropertyUnRegisterTests.cs

源文件路径: GFramework.Core/property/BindablePropertyUnRegister.cs

需要测试的内容:

  • 取消订阅功能
  • 资源清理
  • 与 BindableProperty 的集成
  • 多次取消订阅
  • 取消订阅后的属性变化

预计测试数: 4-6 个

优先级: 🟡

创建路径: GFramework.Core.Tests/property/BindablePropertyUnRegisterTests.cs

状态: 待创建


22. DefaultEnvironmentTests.cs

源文件路径: GFramework.Core/environment/DefaultEnvironment.cs

需要测试的内容:

  • 默认环境实现
  • 平台检测Windows, Linux, Mac等
  • 环境变量访问
  • 运行时信息获取
  • IEnvironment 接口实现
  • 环境信息准确性

预计测试数: 6-8 个

优先级: 🟡

创建路径: GFramework.Core.Tests/environment/DefaultEnvironmentTests.cs

状态: 待创建


🟢 低优先级 - 辅助功能缺失测试4个文件

23. ArchitectureConstantsTests.cs

源文件路径: GFramework.Core/architecture/ArchitectureConstants.cs

需要测试的内容:

  • 常量值的正确性
  • 常量类型验证
  • 常量可访问性
  • 常量命名规范

预计测试数: 3-5 个

优先级: 🟢

创建路径: GFramework.Core.Tests/architecture/ArchitectureConstantsTests.cs

状态: 待创建


24. EmptyCommandInputTests.cs

源文件路径: GFramework.Core/command/EmptyCommandInput.cs

需要测试的内容:

  • 空命令输入的默认行为
  • ICommandInput 接口实现验证
  • 单例模式(如果适用)

预计测试数: 2-3 个

优先级: 🟢

创建路径: GFramework.Core.Tests/command/EmptyCommandInputTests.cs

状态: 待创建


25. EmptyQueryInputTests.cs

源文件路径: GFramework.Core/query/EmptyQueryInput.cs

需要测试的内容:

  • 空查询输入的默认行为
  • IQueryInput 接口实现验证
  • 单例模式(如果适用)

预计测试数: 2-3 个

优先级: 🟢

创建路径: GFramework.Core.Tests/query/EmptyQueryInputTests.cs

状态: 待创建


26. GFrameworkConstantsTests.cs

源文件路径: GFramework.Core/constants/GFrameworkConstants.cs

需要测试的内容:

  • 版本号常量
  • 其他框架常量
  • 常量值正确性
  • 常量类型验证
  • 常量可访问性

预计测试数: 3-5 个

优先级: 🟢

创建路径: GFramework.Core.Tests/constants/GFrameworkConstantsTests.cs

状态: 待创建


📋 详细执行计划

第一批最关键5个文件预计 2-3 小时)

序号 测试文件 预计测试数 优先级 预计时间
1 ArchitectureConfigurationTests.cs 8-10 🔴 15分钟
2 ArchitectureContextTests.cs 15-20 🔴 40分钟
3 ArchitectureServicesTests.cs 10-12 🔴 25分钟
4 ArchitectureEventsTests.cs 8-10 🔴 20分钟
5 ContextAwareStateMachineTests.cs 12-15 🔴 30分钟

小计: 53-67 个测试


第二批重要基础类5个文件预计 2-3 小时)

序号 测试文件 预计测试数 优先级 预计时间
6 AbstractCommandTests.cs 8-10 🔴 25分钟
7 AbstractQueryTests.cs 8-10 🔴 25分钟
8 AbstractLoggerTests.cs 12-15 🔴 35分钟
9 AbstractModelTests.cs 8-10 🔴 20分钟
10 AbstractSystemTests.cs 10-12 🔴 25分钟

小计: 46-57 个测试


第三批扩展功能8个文件预计 2-3 小时)

序号 测试文件 预计测试数 优先级 预计时间
11 AbstractObjectPoolSystemTests.cs 8-10 🟡 20分钟
12 DefaultUnRegisterTests.cs 4-6 🟡 10分钟
13 EasyEventGenericTests.cs 6-8 🟡 15分钟
14 ConsoleLoggerFactoryProviderTests.cs 4-6 🟡 10分钟
15 LoggerFactoryResolverTests.cs 5-8 🟡 15分钟
16 ContextAwareExtensionsTests.cs 10-12 🟡 25分钟
17 OrEventExtensionsTests.cs 6-8 🟡 15分钟
18 ContextAwareStateBaseTests.cs 8-10 🟡 20分钟

小计: 51-68 个测试


第四批可选功能10个文件预计 1-2 小时)

序号 测试文件 预计测试数 优先级 预计时间
19 StateChangedEventTests.cs 4-6 🟡 10分钟
20 AbstractContextUtilityTests.cs 6-8 🟡 15分钟
21 BindablePropertyUnRegisterTests.cs 4-6 🟡 10分钟
22 DefaultEnvironmentTests.cs 6-8 🟡 15分钟
23 ArchitectureConstantsTests.cs 3-5 🟢 10分钟
24 EmptyCommandInputTests.cs 2-3 🟢 5分钟
25 EmptyQueryInputTests.cs 2-3 🟢 5分钟
26 GFrameworkConstantsTests.cs 3-5 🟢 10分钟

小计: 30-44 个测试


📊 最终统计

批次 文件数 预计测试数 预计时间
第一批 5 53-67 2-3小时
第二批 5 46-57 2-3小时
第三批 8 51-68 2-3小时
第四批 8 30-44 1-2小时
总计 26 180-236 7-11小时

🎯 目标达成路径

当前状态

  • 现有测试数: 298 个
  • 测试覆盖率: ~47%
  • 缺失测试: 110-166 个
  • 已完成文件: 5/26 (第一批全部完成)

第一批完成 1/5

  • 当前测试数: 240 个
  • 当前覆盖率: ~42%

第一批完成 2/5

  • 当前测试数: 262 个
  • 当前覆盖率: ~43%

第一批完成 3/5

  • 当前测试数: 277 个
  • 当前覆盖率: ~44%

第一批完成 4/5

  • 当前测试数: 286 个
  • 当前覆盖率: ~45%

第一批完成 5/5

  • 当前测试数: 298 个
  • 当前覆盖率: ~47%
  • 第一批总计: 70 个测试(预计 53-67 个)

第二批预计完成后

  • 预计测试数: 298 + 46-57 = 344-355 个
  • 预计覆盖率: ~55-60%

第二批完成后

  • 预计测试数: 281-295 + 46-57 = 327-352 个
  • 预计覆盖率: ~60-65%

第三批完成后

  • 预计测试数: 327-352 + 51-68 = 378-420 个
  • 预计覆盖率: ~70-75%

第四批完成后

  • 预计测试数: 378-420 + 30-44 = 408-464 个
  • 预计覆盖率: ~75-80%

📝 注意事项

注释规范

  • 生成的测试类需要有注释说明这个测试类具体有哪些测试
  • 测试方法需要有注释说明具体测试的是什么
  • 对于复杂逻辑的测试方法,需要有标准的行注释说明逻辑,不要使用行位注释
  • 对于类与方法的测试需要标准的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. 修复失败或隔离性问题

清单更新

  • 更新完测试后,需要更新本清单进度

🔄 更新日志

日期 操作 说明
2026-01-16 初始创建 生成完整测试覆盖清单
2026-01-16 完成 ArchitectureConfigurationTests.cs 创建了12个测试用例涵盖默认配置、自定义配置、接口实现验证等功能
2026-01-16 完成 ArchitectureContextTests.cs 创建了22个测试用例涵盖构造函数、命令/查询/事件发送、组件获取等功能
2026-01-16 完成 ArchitectureServicesTests.cs 创建了15个测试用例涵盖服务初始化、上下文管理、服务独立性等功能
2026-01-16 完成 ArchitectureEventsTests.cs 创建了9个测试用例涵盖生命周期事件、事件订阅、事件顺序等功能
2026-01-16 完成 ContextAwareStateMachineTests.cs 创建了12个测试用例涵盖状态机集成、上下文感知、状态变更事件等功能

📌 待确认事项

  • 确认优先级划分是否合理
  • 确认执行计划是否可行
  • 确认测试用例数量估算是否准确
  • 确认测试隔离策略是否完整

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