SuperAPI AI 工具集

aspire-integration-testing

测试与质量

查看项目

更新于 10-16 01:27

技能介绍

用途:在 .NET Aspire 应用中编写集成测试,覆盖 ASP.NET Core 应用连接真实数据库、分布式应用中服务间通信、容器内真实基础设施(SQL Server、Redis、消息队列)测试,以及结合 Playwright 的 UI 测试。

核心原则:使用真实依赖而非 mock;让 Aspire 动态分配端口(127.0.0.1:0)避免冲突;用 IAsyncLifetime 管理夹具生命周期;运行时发现端点而非硬编码 URL;用 xUnit 集合控制并行隔离;测试前等待服务健康。

所需 NuGet 包:Aspire.Hosting.Testing、xunit、xunit.runner.visualstudio、Microsoft.NET.Test.Sdk,均需按资料中的 PackageReference 写法引入。

关键修复:大量集成测试各自启动 IHost 时,默认主机生成器会启用配置文件监视,在 Linux 上耗尽文件描述符。需在测试项目加入 ModuleInitializer,全局设置环境变量 DOTNET_HOSTBUILDER__RELOADCONFIGONCHANGE 为 false。

使用方式:通过 AspireFixture(IAsyncLifetime)启动 DistributedApplication,从 AppHost 暴露动态 HTTP 端点,再由 HttpClient 或 Playwright 消费。测试时先调用 await _app.StartAsync() 并轮询健康检查,避免立即超时;连接字符串应通过 GetConnectionStringAsync() 动态获取。用 [Collection] 属性让相关测试顺序执行,共享夹具以减少启动次数;同一时间只能运行一个 Aspire 仪表板,测试会复用同一实例。

CI/CD:资料提供 GitHub Actions 示例,包含检出、安装 9.0.x .NET、还原、Release 构建,并用 dotnet test 运行集成测试,带 trx 日志与 XPlat 代码覆盖率,最后上传测试结果。

MCP 集成:Aspire 13.1+ 提供 MCP 集成,供 Claude Code 等 AI 助手查询应用状态、日志与跟踪。安装命令:dotnet tool install -g aspire.cli 或 dotnet tool update -g aspire.cli;在 AppHost 目录运行 aspire mcp init;以 aspire run 运行并输出 MCP 端点。

适用场景:微服务服务发现与网络测试、数据访问层验证、异步消息验证、全栈 UI 测试。

限制与提示:资料未提供具体价格、平台支持范围与性能数据,暂未提供这些信息。常见问题包括端口冲突、时序导致的脆弱测试、SQL 连接失败、并行干扰等,应通过集合、健康检查轮询与动态连接字符串解决。