用途:为 Aspire CLI 编写、修改、调试和审查端到端测试时提供规范与模式。测试位于 tests/Aspire.Cli.EndToEnd.Tests/,通过 Hex1b 库自动化终端会话,模拟真实用户与 Aspire CLI 的交互,并在 CI 中配合 asciinema 录制便于排错。仅支持 Linux:Hex1b 需要 Linux 终端环境,测试在 Windows 与 macOS 上配置为跳过。
主要能力与组件:核心类包括 Hex1bTerminal(终端自动化)、Hex1bTerminalAutomator(异步 API,新测试首选)、共享扩展方法 Hex1bAutomatorTestHelpers、CLI 专用扩展 CliE2EAutomatorHelpers、CellPatternSearcher(终端单元格内容匹配)、SequenceCounter(统计命令执行次数以实现确定性提示符检测)、CliE2ETestHelpers、TemporaryWorkspace,以及旧版 Hex1bTerminalInputSequenceBuilder。
使用方式:每个测试创建 TemporaryWorkspace 保证隔离,构建 headless 且带录制的 Hex1bTerminal,用 Hex1bTerminalAutomator 包装终端,并用 async/await 驱动。建议始终通过 CliE2ETestHelpers.StartRun 包装运行,返回的 TerminalRun 会自动采集 Aspire 诊断信息、输入 exit 关闭终端并等待任务完成。PrepareDockerEnvironmentAsync 设置自定义提示符 [N OK] $ 或 [N ERR:code] $,配合 WaitForSuccessPromptAsync 实现确定性等待,优于任意超时。输出检测优先使用 CellPatternSearcher.Find 做字面匹配;含正则特殊字符时不要用 FindPattern。
本地运行:需 Docker Desktop(Linux 容器)与 .NET 10 SDK。先用 ./localhive.sh -o /tmp/aspire-e2e -r linux-arm64 --archive 构建可移植归档,再以 ASPIRE_E2E_ARCHIVE=/tmp/aspire-e2e.tar.gz dotnet test tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj -- --filter-method "*.CreateAndRunAspireStarterProject" 运行。Windows 使用 .\localhive.ps1 并选 linux-x64。安装模式由 CliInstallStrategy 自动检测,可用 ASPIRE_E2E_ARCHIVE、ASPIRE_E2E_QUALITY、ASPIRE_E2E_VERSION 覆盖。
限制:仅 Linux;模拟固定稳定版本时需隔离 NuGet 全局缓存(设置 NUGET_PACKAGES),否则旧版本会遮蔽新构建产物。其他细节资料未提供。