From 49df81e46f83d86dd7f3f9d68fbe7c4d440f99b2 Mon Sep 17 00:00:00 2001
From: GeWuYou <95328647+GeWuYou@users.noreply.github.com>
Date: Wed, 15 Apr 2026 12:59:12 +0800
Subject: [PATCH] =?UTF-8?q?refactor(tests):=20=E9=87=8D=E6=9E=84=20CQRS=20?=
=?UTF-8?q?=E5=A4=84=E7=90=86=E7=A8=8B=E5=BA=8F=E6=B5=8B=E8=AF=95=E6=9E=B6?=
=?UTF-8?q?=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 移除自定义测试架构类,改用现有的 SyncTestArchitecture
- 将 RegisterCqrsHandlersFromAssembly 测试方法中的架构创建逻辑提取为统一方法
- 更新重复程序集注册去重测试,验证不同 Assembly 实例但相同程序集键的情况
- 简化测试架构初始化逻辑,使用 AddPostRegistrationHook 替代自定义配置
- 调整注释文档以反映新的测试架构创建方式
- 移除 GitHub 工作流中对 main 分支的限制条件
---
.github/workflows/auto-tag.yml | 1 -
...ArchitectureAdditionalCqrsHandlersTests.cs | 34 +++++++++----------
2 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/.github/workflows/auto-tag.yml b/.github/workflows/auto-tag.yml
index a8e761bd..9588c304 100644
--- a/.github/workflows/auto-tag.yml
+++ b/.github/workflows/auto-tag.yml
@@ -18,7 +18,6 @@ jobs:
(
github.event_name == 'workflow_run' &&
github.event.workflow_run.conclusion == 'success' &&
- github.event.workflow_run.head_branch == 'main' &&
contains(github.event.workflow_run.head_commit.message, '[release ci]')
)
||
diff --git a/GFramework.Core.Tests/Architectures/ArchitectureAdditionalCqrsHandlersTests.cs b/GFramework.Core.Tests/Architectures/ArchitectureAdditionalCqrsHandlersTests.cs
index d757beaa..5cb6206c 100644
--- a/GFramework.Core.Tests/Architectures/ArchitectureAdditionalCqrsHandlersTests.cs
+++ b/GFramework.Core.Tests/Architectures/ArchitectureAdditionalCqrsHandlersTests.cs
@@ -12,6 +12,8 @@ namespace GFramework.Core.Tests.Architectures;
[TestFixture]
public sealed class ArchitectureAdditionalCqrsHandlersTests
{
+ private ILoggerFactoryProvider? _previousLoggerFactoryProvider;
+
///
/// 初始化日志工厂和共享测试状态。
///
@@ -37,8 +39,6 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
"LoggerFactoryResolver.Provider should be captured during setup.");
}
- private ILoggerFactoryProvider? _previousLoggerFactoryProvider;
-
///
/// 验证显式声明的额外程序集会在初始化阶段接入当前架构容器。
///
@@ -46,7 +46,7 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
public async Task RegisterCqrsHandlersFromAssembly_Should_Register_Handlers_From_Explicit_Assembly()
{
var generatedAssembly = CreateGeneratedHandlerAssembly();
- var architecture = new AdditionalHandlersTestArchitecture(target =>
+ var architecture = CreateArchitecture(target =>
target.RegisterCqrsHandlersFromAssembly(generatedAssembly.Object));
await architecture.InitializeAsync();
@@ -63,16 +63,17 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
}
///
- /// 验证同一额外程序集被重复声明时,不会向容器重复写入相同 handler 映射。
+ /// 验证不同 实例只要解析到相同程序集键,就不会向容器重复写入相同 handler 映射。
///
[Test]
public async Task RegisterCqrsHandlersFromAssembly_Should_Deduplicate_Repeated_Assembly_Registration()
{
- var generatedAssembly = CreateGeneratedHandlerAssembly();
- var architecture = new AdditionalHandlersTestArchitecture(target =>
+ var generatedAssemblyA = CreateGeneratedHandlerAssembly();
+ var generatedAssemblyB = CreateGeneratedHandlerAssembly();
+ var architecture = CreateArchitecture(target =>
{
- target.RegisterCqrsHandlersFromAssembly(generatedAssembly.Object);
- target.RegisterCqrsHandlersFromAssemblies([generatedAssembly.Object]);
+ target.RegisterCqrsHandlersFromAssembly(generatedAssemblyA.Object);
+ target.RegisterCqrsHandlersFromAssemblies([generatedAssemblyB.Object]);
});
await architecture.InitializeAsync();
@@ -106,18 +107,15 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
}
///
- /// 用于测试额外程序集注册入口的最小架构实现。
+ /// 创建复用现有测试架构基建的测试架构,并在注册阶段后执行额外程序集接入逻辑。
///
- private sealed class AdditionalHandlersTestArchitecture(Action configure) :
- Architecture
+ /// 初始化阶段执行的额外 CQRS 程序集接入逻辑。
+ /// 带有注册后钩子的测试架构实例。
+ private static SyncTestArchitecture CreateArchitecture(Action configure)
{
- ///
- /// 在初始化阶段执行测试注入的额外 CQRS 程序集接入逻辑。
- ///
- protected override void OnInitialize()
- {
- configure(this);
- }
+ var architecture = new SyncTestArchitecture();
+ architecture.AddPostRegistrationHook(configure);
+ return architecture;
}
}