# RocketMQ / MessageQueue 单元测试报告
# 1. 测试范围
覆盖 test/Air.Cloud.UnitTest/Modules/RocketMQ。
目标不是验证真实 RocketMQ Proxy,而是验证 RocketMQ 模块配置模型、Key 生成器、上下文和默认服务注册是否满足 IMessageQueueStandard 相关契约。
# 2. 测试内容与边界
# 配置模型边界
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
|---|---|---|---|
| 生产者默认配置 | Endpoints = 127.0.0.1:8081,Topic 未显式配置 | ProducerConfigs = null | 自动创建 RocketMQProducerConfigModel,补齐 Endpoint、TLS、超时与凭证。 |
| 生产者默认 Key 类型 | new RocketMQProducerConfigModel() | 未显式配置 KeyType | 默认 KeyType = typeof(string)。 |
| 消费者配置补齐 | ConsumerConfig 存在但缺少 Endpoint | 内层客户端配置不完整 | 保留 ConsumerGroup、FilterExpression、BatchSize,补齐全局 Endpoint 与超时。 |
| 消费者默认 Key 类型 | new RocketMQConsumerConfigModel() | 未显式配置 KeyType | 默认 KeyType = typeof(string)。 |
# Key 与上下文边界
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
|---|---|---|---|
| 默认字符串 Key 生成器 | RocketMQ Key 上下文 | 多次生成 | 返回非空且不同的字符串 Key。 |
| Key 上下文 | Topic、消息内容、发布配置 | 无 provider 特定强依赖 | 暴露 ProviderName = RocketMQ、消息类型、配置类型和强类型生产配置。 |
# 模块注册边界
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
|---|---|---|---|
| 默认注册 | 空 ServiceCollection 调用 AddRocketMQService() | 未注册业务实现 | 注册 RocketMQ 默认服务、默认 string Key 生成器、默认恢复与失败补偿实现。 |
| 业务提前注册默认实现 | 调用 AddRocketMQService() 前注册自定义恢复/补偿实现 | 默认实现可能覆盖业务实现 | 不覆盖业务实现,业务实现优先。 |
| 业务提前注册 string Key 生成器 | 先注册自定义 IMessageQueueKeyGenerator<string> | 默认 string Key 生成器可能覆盖业务实现 | 不覆盖自定义 string Key 生成器。 |
# 3. 测试结果
运行命令:
dotnet test test/Air.Cloud.UnitTest/Air.Cloud.UnitTest.csproj --filter "FullyQualifiedName~RocketMQ"
结果:7/7 通过。单元测试不连接 RocketMQ Proxy。