From 804ccee329f59c2bffd988fa136359525daa2f61 Mon Sep 17 00:00:00 2001 From: GeWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Fri, 16 Jan 2026 12:21:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(tests):=20=E6=B7=BB=E5=8A=A0ArchitectureEv?= =?UTF-8?q?entsTests=E6=B5=8B=E8=AF=95=E7=B1=BB=E5=B9=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=A6=86=E7=9B=96=E7=8E=87=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增ArchitectureEventsTests.cs文件,包含9个测试用例 - 覆盖架构生命周期事件、事件订阅、事件顺序等核心功能 - 测试用例包括ArchitectureLifecycleReadyEvent、ArchitectureDestroyingEvent、 ArchitectureDestroyedEvent、ArchitectureFailedInitializationEvent等事件 - 更新TEST_COVERAGE_PLAN.md中的测试统计数据 - 测试覆盖率从44%提升至45% - 现有测试数从277个增加到286个 - 缺失测试数相应调整为122-178个 - 已完成文件数更新为4/26个 --- GFramework.Core.Tests/TEST_COVERAGE_PLAN.md | 19 ++- .../events/ArchitectureEventsTests.cs | 137 ++++++++++++++++++ 2 files changed, 150 insertions(+), 6 deletions(-) create mode 100644 GFramework.Core.Tests/events/ArchitectureEventsTests.cs diff --git a/GFramework.Core.Tests/TEST_COVERAGE_PLAN.md b/GFramework.Core.Tests/TEST_COVERAGE_PLAN.md index 45da38b..d7803ed 100644 --- a/GFramework.Core.Tests/TEST_COVERAGE_PLAN.md +++ b/GFramework.Core.Tests/TEST_COVERAGE_PLAN.md @@ -2,7 +2,7 @@ > **生成日期**: 2026-01-16 > **最后更新**: 2026-01-16 -> **当前版本**: Core测试覆盖率 ~44% +> **当前版本**: Core测试覆盖率 ~45% > **目标**: 提升Core模块测试覆盖率至 85%+ --- @@ -148,11 +148,13 @@ **预计测试数**: 8-10 个 +**实际测试数**: 9 个 + **优先级**: 🔴 高 **创建路径**: `GFramework.Core.Tests/events/ArchitectureEventsTests.cs` -**状态**: ❌ 待创建 +**状态**: ✅ 已创建 --- @@ -760,10 +762,10 @@ ## 🎯 目标达成路径 ### 当前状态 -- **现有测试数**: 277 个 -- **测试覆盖率**: ~44% -- **缺失测试**: 131-187 个 -- **已完成文件**: 3/26 (ArchitectureConfigurationTests.cs, ArchitectureContextTests.cs, ArchitectureServicesTests.cs) +- **现有测试数**: 286 个 +- **测试覆盖率**: ~45% +- **缺失测试**: 122-178 个 +- **已完成文件**: 4/26 (ArchitectureConfigurationTests.cs, ArchitectureContextTests.cs, ArchitectureServicesTests.cs, ArchitectureEventsTests.cs) ### 第一批完成 1/5 - **当前测试数**: 240 个 @@ -777,6 +779,10 @@ - **当前测试数**: 277 个 - **当前覆盖率**: ~44% +### 第一批完成 4/5 +- **当前测试数**: 286 个 +- **当前覆盖率**: ~45% + ### 第一批完成后 - **预计测试数**: 228 + 53-67 = 281-295 个 - **预计覆盖率**: ~50-55% @@ -833,6 +839,7 @@ | 2026-01-16 | 完成 ArchitectureConfigurationTests.cs | 创建了12个测试用例,涵盖默认配置、自定义配置、接口实现验证等功能 | | 2026-01-16 | 完成 ArchitectureContextTests.cs | 创建了22个测试用例,涵盖构造函数、命令/查询/事件发送、组件获取等功能 | | 2026-01-16 | 完成 ArchitectureServicesTests.cs | 创建了15个测试用例,涵盖服务初始化、上下文管理、服务独立性等功能 | +| 2026-01-16 | 完成 ArchitectureEventsTests.cs | 创建了9个测试用例,涵盖生命周期事件、事件订阅、事件顺序等功能 | | | | | --- diff --git a/GFramework.Core.Tests/events/ArchitectureEventsTests.cs b/GFramework.Core.Tests/events/ArchitectureEventsTests.cs new file mode 100644 index 0000000..d308cf9 --- /dev/null +++ b/GFramework.Core.Tests/events/ArchitectureEventsTests.cs @@ -0,0 +1,137 @@ +using System; +using GFramework.Core.events; +using NUnit.Framework; + +namespace GFramework.Core.Tests.events; + +[TestFixture] +public class ArchitectureEventsTests +{ + private EventBus? _eventBus; + + [SetUp] + public void SetUp() + { + _eventBus = new EventBus(); + } + + [Test] + public void ArchitectureLifecycleReadyEvent_Should_Be_Created_And_Sent() + { + bool eventReceived = false; + + _eventBus!.Register(_ => eventReceived = true); + _eventBus.Send(); + + Assert.That(eventReceived, Is.True); + } + + [Test] + public void ArchitectureDestroyingEvent_Should_Be_Created_And_Sent() + { + bool eventReceived = false; + + _eventBus!.Register(_ => eventReceived = true); + _eventBus.Send(); + + Assert.That(eventReceived, Is.True); + } + + [Test] + public void ArchitectureDestroyedEvent_Should_Be_Created_And_Sent() + { + bool eventReceived = false; + + _eventBus!.Register(_ => eventReceived = true); + _eventBus.Send(); + + Assert.That(eventReceived, Is.True); + } + + [Test] + public void ArchitectureFailedInitializationEvent_Should_Be_Created_And_Sent() + { + bool eventReceived = false; + + _eventBus!.Register(_ => eventReceived = true); + _eventBus.Send(); + + Assert.That(eventReceived, Is.True); + } + + [Test] + public void Events_Should_Be_Sent_In_Correct_Order() + { + var events = new List(); + + _eventBus!.Register(_ => events.Add("Ready")); + _eventBus!.Register(_ => events.Add("Destroying")); + _eventBus!.Register(_ => events.Add("Destroyed")); + + _eventBus.Send(); + _eventBus.Send(); + _eventBus.Send(); + + Assert.That(events.Count, Is.EqualTo(3)); + Assert.That(events[0], Is.EqualTo("Ready")); + Assert.That(events[1], Is.EqualTo("Destroying")); + Assert.That(events[2], Is.EqualTo("Destroyed")); + } + + [Test] + public void Multiple_Subscribers_Should_All_Receive_Events() + { + var count1 = 0; + var count2 = 0; + + _eventBus!.Register(_ => count1++); + _eventBus!.Register(_ => count2++); + + _eventBus.Send(); + + Assert.That(count1, Is.EqualTo(1)); + Assert.That(count2, Is.EqualTo(1)); + } + + [Test] + public void Event_UnRegister_Should_Prevent_Future_Events() + { + var count = 0; + var unregister = _eventBus!.Register(_ => count++); + + _eventBus.Send(); + Assert.That(count, Is.EqualTo(1)); + + unregister.UnRegister(); + _eventBus.Send(); + + Assert.That(count, Is.EqualTo(1)); + } + + [Test] + public void Different_Events_Should_Not_Interfere() + { + bool readyReceived = false; + bool destroyingReceived = false; + + _eventBus!.Register(_ => readyReceived = true); + _eventBus!.Register(_ => destroyingReceived = true); + + _eventBus.Send(); + + Assert.That(readyReceived, Is.True); + Assert.That(destroyingReceived, Is.False); + + _eventBus.Send(); + + Assert.That(destroyingReceived, Is.True); + } + + [Test] + public void Event_Can_Be_Sent_Without_Subscribers() + { + Assert.That(() => _eventBus!.Send(), + Throws.Nothing); + } +} +