TUnit测试运行器Skill tunit

这是一个用于自动化测试的技能,专门用于在.NET环境中使用TUnit框架和Playwright浏览器自动化工具来运行UI测试。它提供了运行全部或部分测试、控制并行度、过滤测试用例、生成测试报告以及减少测试不稳定性(Flakiness)的功能。关键词:TUnit测试,Playwright自动化,.NET测试,UI测试,自动化测试,测试运行,测试报告,Blazor测试。

测试 0 次安装 0 次浏览 更新于 3/1/2026

名称: tunit 描述: 使用 Playwright 运行 TUnit 测试。当用户要求运行测试、执行测试或检查测试是否通过时使用。

运行 TUnit 测试

本项目使用 TUnit 与 Playwright 进行测试。测试位于 tests/SummitUI.Tests.Playwright/ 目录中。

运行所有测试

dotnet run --project tests/SummitUI.Tests.Playwright

以有限并行度运行测试(推荐)

为防止运行 Playwright 测试时系统过载,请限制并行测试执行:

# 以最多 1 个并行测试运行(顺序执行)
dotnet run --project tests/SummitUI.Tests.Playwright -- --maximum-parallel-tests 1

# 以最多 2 个并行测试运行
dotnet run --project tests/SummitUI.Tests.Playwright -- --maximum-parallel-tests 2

使用过滤器运行测试

TUnit 使用 --treenode-filter 并遵循路径模式:/程序集/命名空间/类/测试

按类名过滤:

dotnet run --project SummitUI.Tests.Playwright -- --treenode-filter '/*/*/类名/*'

按精确测试名过滤:

dotnet run --project SummitUI.Tests.Playwright -- --treenode-filter '/*/*/*/测试名'

示例:

# 运行所有 Select 可访问性测试
dotnet run --project tests/SummitUI.Tests.Playwright -- --treenode-filter '/*/*/SelectAccessibilityTests/*'

# 按名称运行特定测试
dotnet run --project tests/SummitUI.Tests.Playwright -- --treenode-filter '/*/*/*/Trigger_ShouldHave_RoleCombobox'

# 运行匹配模式的测试(测试名中使用通配符)
dotnet run --project tests/SummitUI.Tests.Playwright -- --treenode-filter '/*/*/*/Keyboard*'

# 运行命名空间中的所有测试
dotnet run --project tests/SummitUI.Tests.Playwright -- --treenode-filter '/*/SummitUI.Tests.Playwright/*/*'

在调试模式下运行测试

当调试器附加时,Playwright 将通过 Hooks.cs 中的设置自动在调试模式(PWDEBUG=1)下运行。

查看测试输出

添加 --report 标志以获取不同的输出格式:

# 带有详细信息的控制台输出
dotnet run --project tests/SummitUI.Tests.Playwright -- --output-format console-detailed

# 生成 TRX 报告
dotnet run --project tests/SummitUI.Tests.Playwright -- --report-trx

减少测试不稳定性

测试项目包含多项功能以减少不稳定性:

  1. 自动重试:测试失败时自动重试最多 2 次(GlobalSetup.cs 中的 [Retry(2)]
  2. 完全顺序执行:所有测试通过 GlobalSetup.cs 中的 [assembly: NotInParallel] 顺序运行
  3. 服务器就绪检查Hooks.cs 在测试开始前等待 Blazor 服务器完全就绪
  4. 延长超时时间:通过 tunit.json 配置更长的测试和钩子超时时间

项目结构

  • GlobalSetup.cs - 程序集级别的测试配置(重试、并行度)
  • Hooks.cs - 测试会话设置/拆卸(启动 Blazor 服务器)
  • BlazorWebApplicationFactory.cs - 用于托管测试服务器的 WebApplicationFactory
  • tunit.json - TUnit 配置文件
  • *AccessibilityTests.cs - 继承自 PageTest 的可访问性测试类

测试约定

  • 测试继承自 TUnit.Playwright.PageTest 以获取 Page 访问权限
  • 使用 [Before(Test)] 进行每个测试的设置
  • 使用 [Before(TestSession)] / [After(TestSession)] 进行会话范围的设置
  • 通过 Hooks.ServerUrl 访问正在运行的服务器