# Consul 服务中心单元测试报告
# 1. 测试范围
覆盖 test/Air.Cloud.UnitTest/Modules/Consul/ConsulServerCenterContractTests.cs。
目标是验证 IServerCenterStandard 的服务注册、服务发现和按服务名获取详情契约。单元测试使用内存实现,不连接真实 Consul。
# 2. 测试内容与边界
# 服务注册与查询
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
|---|---|---|---|
| 注册服务并查询 | ServiceName = air-cloud-unit-service,ServiceKey = air-cloud-unit-service-1,ServiceAddress = http://127.0.0.1:5010 | 无 | RegisterAsync 返回 true,QueryAsync 返回同名服务,服务名、服务标识、服务地址一致。 |
| 同名实例聚合 | 同一 ServiceName 下注册两个不同 ServiceKey | 同名多实例 | QueryAsync 只返回一个服务项,ServiceValues 包含两个实例标识。 |
# 服务详情
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
|---|---|---|---|
| 按服务名获取详情 | 同一服务名下注册 5011、5012 两个实例 | 无 | GetAsync(serviceName) 返回两个实例详情,实例 ID、服务名和端口一致。 |
| 查询不存在服务 | serviceName = air-cloud-unit-missing | 服务名未注册 | 返回空详情集合,不返回其他服务。 |
# 注册参数规范化
| 测试目标 | 边界内入参 | 边界外 / 异常入参 | 预期结果 |
|---|---|---|---|
| 健康检查路由规范化 | HealthCheckRoute = healthz | 路由不以 / 开头 | 注册后健康检查地址使用 /healthz,避免生成错误 URL。 |
# 3. 测试结果
本报告已单独运行对应过滤命令,结果:5/5 通过。
dotnet test test/Air.Cloud.UnitTest/Air.Cloud.UnitTest.csproj --no-restore --filter "FullyQualifiedName~ConsulServerCenterContractTests" -m:1
# 4. 对应目标中间件版本
单元测试不连接真实 Consul。目标是 IServerCenterStandard 的标准调用契约。