mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-13 22:25:37 +08:00
refactor(tests): 重构 CQRS 处理程序测试架构
- 移除自定义测试架构类,改用现有的 SyncTestArchitecture - 将 RegisterCqrsHandlersFromAssembly 测试方法中的架构创建逻辑提取为统一方法 - 更新重复程序集注册去重测试,验证不同 Assembly 实例但相同程序集键的情况 - 简化测试架构初始化逻辑,使用 AddPostRegistrationHook 替代自定义配置 - 调整注释文档以反映新的测试架构创建方式 - 移除 GitHub 工作流中对 main 分支的限制条件
This commit is contained in:
parent
340b6cae90
commit
49df81e46f
1
.github/workflows/auto-tag.yml
vendored
1
.github/workflows/auto-tag.yml
vendored
@ -18,7 +18,6 @@ jobs:
|
|||||||
(
|
(
|
||||||
github.event_name == 'workflow_run' &&
|
github.event_name == 'workflow_run' &&
|
||||||
github.event.workflow_run.conclusion == 'success' &&
|
github.event.workflow_run.conclusion == 'success' &&
|
||||||
github.event.workflow_run.head_branch == 'main' &&
|
|
||||||
contains(github.event.workflow_run.head_commit.message, '[release ci]')
|
contains(github.event.workflow_run.head_commit.message, '[release ci]')
|
||||||
)
|
)
|
||||||
||
|
||
|
||||||
|
|||||||
@ -12,6 +12,8 @@ namespace GFramework.Core.Tests.Architectures;
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public sealed class ArchitectureAdditionalCqrsHandlersTests
|
public sealed class ArchitectureAdditionalCqrsHandlersTests
|
||||||
{
|
{
|
||||||
|
private ILoggerFactoryProvider? _previousLoggerFactoryProvider;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 初始化日志工厂和共享测试状态。
|
/// 初始化日志工厂和共享测试状态。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -37,8 +39,6 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
|
|||||||
"LoggerFactoryResolver.Provider should be captured during setup.");
|
"LoggerFactoryResolver.Provider should be captured during setup.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private ILoggerFactoryProvider? _previousLoggerFactoryProvider;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 验证显式声明的额外程序集会在初始化阶段接入当前架构容器。
|
/// 验证显式声明的额外程序集会在初始化阶段接入当前架构容器。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -46,7 +46,7 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
|
|||||||
public async Task RegisterCqrsHandlersFromAssembly_Should_Register_Handlers_From_Explicit_Assembly()
|
public async Task RegisterCqrsHandlersFromAssembly_Should_Register_Handlers_From_Explicit_Assembly()
|
||||||
{
|
{
|
||||||
var generatedAssembly = CreateGeneratedHandlerAssembly();
|
var generatedAssembly = CreateGeneratedHandlerAssembly();
|
||||||
var architecture = new AdditionalHandlersTestArchitecture(target =>
|
var architecture = CreateArchitecture(target =>
|
||||||
target.RegisterCqrsHandlersFromAssembly(generatedAssembly.Object));
|
target.RegisterCqrsHandlersFromAssembly(generatedAssembly.Object));
|
||||||
|
|
||||||
await architecture.InitializeAsync();
|
await architecture.InitializeAsync();
|
||||||
@ -63,16 +63,17 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 验证同一额外程序集被重复声明时,不会向容器重复写入相同 handler 映射。
|
/// 验证不同 <see cref="Assembly" /> 实例只要解析到相同程序集键,就不会向容器重复写入相同 handler 映射。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Test]
|
[Test]
|
||||||
public async Task RegisterCqrsHandlersFromAssembly_Should_Deduplicate_Repeated_Assembly_Registration()
|
public async Task RegisterCqrsHandlersFromAssembly_Should_Deduplicate_Repeated_Assembly_Registration()
|
||||||
{
|
{
|
||||||
var generatedAssembly = CreateGeneratedHandlerAssembly();
|
var generatedAssemblyA = CreateGeneratedHandlerAssembly();
|
||||||
var architecture = new AdditionalHandlersTestArchitecture(target =>
|
var generatedAssemblyB = CreateGeneratedHandlerAssembly();
|
||||||
|
var architecture = CreateArchitecture(target =>
|
||||||
{
|
{
|
||||||
target.RegisterCqrsHandlersFromAssembly(generatedAssembly.Object);
|
target.RegisterCqrsHandlersFromAssembly(generatedAssemblyA.Object);
|
||||||
target.RegisterCqrsHandlersFromAssemblies([generatedAssembly.Object]);
|
target.RegisterCqrsHandlersFromAssemblies([generatedAssemblyB.Object]);
|
||||||
});
|
});
|
||||||
|
|
||||||
await architecture.InitializeAsync();
|
await architecture.InitializeAsync();
|
||||||
@ -106,18 +107,15 @@ public sealed class ArchitectureAdditionalCqrsHandlersTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用于测试额外程序集注册入口的最小架构实现。
|
/// 创建复用现有测试架构基建的测试架构,并在注册阶段后执行额外程序集接入逻辑。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private sealed class AdditionalHandlersTestArchitecture(Action<AdditionalHandlersTestArchitecture> configure) :
|
/// <param name="configure">初始化阶段执行的额外 CQRS 程序集接入逻辑。</param>
|
||||||
Architecture
|
/// <returns>带有注册后钩子的测试架构实例。</returns>
|
||||||
|
private static SyncTestArchitecture CreateArchitecture(Action<TestArchitectureBase> configure)
|
||||||
{
|
{
|
||||||
/// <summary>
|
var architecture = new SyncTestArchitecture();
|
||||||
/// 在初始化阶段执行测试注入的额外 CQRS 程序集接入逻辑。
|
architecture.AddPostRegistrationHook(configure);
|
||||||
/// </summary>
|
return architecture;
|
||||||
protected override void OnInitialize()
|
|
||||||
{
|
|
||||||
configure(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user