SuperAPI AI 工具集

write-xaml-tests

测试与质量

查看项目

更新于 10-16 10:14

技能介绍

用途

write-xaml-tests 是 dotnet/maui 仓库中的一个技能,用于为 GitHub issue 创建 XAML 单元测试。这些测试验证 XAML 解析、XamlC 编译(IL 生成)以及源生成(Source Generator)行为。

适用场景

以下情况应使用本技能:

  • 测试 XAML 解析/膨胀(inflation)行为
  • 测试 XamlC(IL 生成)的正确性
  • 测试源生成器(Source Generator)的输出
  • XAML 特定缺陷,例如绑定、标记扩展、x:Name 等

以下情况不应使用本技能:

  • 测试 UI 交互或视觉行为 → 使用 write-ui-tests 技能
  • 测试页面加载后的运行时行为 → 使用 write-ui-tests 技能
  • 测试平台特定渲染 → 使用 write-ui-tests 技能

所需输入

调用前需确保具备:

  • issue 编号(例如 12345)
  • issue 描述——说明哪个 XAML 行为出现异常
  • 预期行为与实际行为

工作流

第 1 步:阅读 XAML 单元测试指南

cat .github/instructions/xaml-unittests.instructions.md

该文件包含以下方面的权威约定:

  • 文件命名(MauiXXXXX.xaml 和 MauiXXXXX.xaml.cs)
  • 文件位置(src/Controls/tests/Xaml.UnitTests/Issues/)
  • 使用 [Values] XamlInflator 的测试模式
  • 使用 MockCompiler 进行 XamlC 测试
  • 使用 MockSourceGenerator 进行源生成器测试
  • 用于无效代码生成的特殊文件扩展名(.rt.xaml、.rtsg.xaml、.rtxc.xaml)

第 2 步:创建测试文件

按照第 1 步的约定创建:

  • src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml
  • src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml.cs

第 3 步:验证测试可编译并运行

# Build the test project
dotnet build src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj -c Debug --no-restore -v q

# Run specific test
dotnet test src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj --filter "FullyQualifiedName~MauiXXXXX" --no-build

第 4 步:验证测试行为

  • 缺陷复现测试:修复前测试应失败,修复后应通过
  • 回归测试:测试应通过以确认行为正常

输出

完成后报告:

✅ XAML unit test created for Issue #XXXXX

**Files:**
- `src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml`
- `src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml.cs`

**Test method:** `DescriptiveTestName`
**Inflators tested:** Runtime, XamlC, SourceGen
**Verification:** Tests [PASS/FAIL] as expected

参考资料

  • 完整约定:.github/instructions/xaml-unittests.instructions.md
  • 测试项目:src/Controls/tests/Xaml.UnitTests/
  • 现有 issue 测试:src/Controls/tests/Xaml.UnitTests/Issues/

限制

本技能仅用于 XAML 解析、XamlC 编译和源生成相关的单元测试,不覆盖 UI 交互、视觉行为、页面加载后的运行时行为以及平台特定渲染。