You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大型多视图项目CodedUI测试最佳设计与执行方法咨询

嘿,你已经把UIMap的拆分逻辑规划得很合理了,这种按视图独立维护UIMap的方式,后期维护起来会省心很多!针对你困惑的「怎么运行这些测试」,我来给你梳理清晰的步骤:

第一步:把UIMap和测试类绑定

首先,你需要为每个视图创建对应的测试类,在类里实例化对应的UIMap,这样才能调用录制好的元素和操作。举个例子,针对Dir1 View1的测试类可以这么写:

[CodedUITest]
public class Dir1View1Tests
{
    // 实例化对应视图的UIMap
    private UIMap11 _uiMap11;

    // 测试初始化:每个测试方法执行前都会运行
    [TestInitialize]
    public void Setup()
    {
        _uiMap11 = new UIMap11();
        // 这里还可以加通用的准备操作,比如启动应用、导航到Dir1 View1
        CommonFunctions.NavigateToView("Dir1View1");
    }

    // 测试清理:每个测试方法执行后运行
    [TestCleanup]
    public void Teardown()
    {
        // 比如关闭当前视图、重置应用状态
        CommonFunctions.CleanupCurrentView();
    }
}
第二步:编写具体的测试方法

在每个测试类里,你可以结合录制的UIMap元素和手动编码,编写针对性的测试逻辑。比如验证View1里的按钮点击功能:

[TestMethod]
[TestCategory("Dir1")] // 加分类方便后续批量运行
public void TestDir1View1ButtonClick()
{
    // 1. 用UIMap里录制的元素定位按钮
    var submitButton = _uiMap11.UISubmitButtonElement;
    
    // 2. 执行点击操作
    Mouse.Click(submitButton);
    
    // 3. 验证操作结果(比如弹窗文本是否符合预期)
    var successDialog = _uiMap11.UISuccessDialogElement;
    Assert.IsTrue(successDialog.Exists, "点击按钮后未弹出成功弹窗");
    Assert.AreEqual("操作成功", successDialog.Text);
}
第三步:运行测试的几种常用方式

1. 用Visual Studio测试资源管理器

这是最直观的方式:

  • 打开Visual Studio,顶部菜单栏选择「Test > Test Explorer」,调出测试面板
  • 面板里会列出所有标记了[TestMethod]的方法,你可以:
    • 右键单个测试方法,选择「Run Selected Tests」运行单条测试
    • 右键测试类/分类,批量运行一组测试
    • 点击面板顶部的「Run All Tests」按钮,运行所有测试

2. 命令行运行(适合CI/CD或自动化脚本)

如果需要在构建流水线或脚本里自动运行测试,可以用vstest.console.exe工具(Visual Studio自带,路径一般在C:\Program Files (x86)\Microsoft Visual Studio\[版本号]\Community\Common7\IDE\Extensions\TestPlatform这类目录下):

# 运行单个测试方法
vstest.console.exe "你的测试项目路径\Bin\Debug\YourCodedUITestProject.dll" /Tests:Dir1View1Tests.TestDir1View1ButtonClick

# 运行某个分类下的所有测试
vstest.console.exe "你的测试项目路径\Bin\Debug\YourCodedUITestProject.dll" /TestCaseFilter:"TestCategory=Dir1"

3. 分组运行(按视图/目录)

你可以给测试方法加上[TestCategory]属性(比如示例里的[TestCategory("Dir1")]),然后在Test Explorer里点击「Group By > Test Category」,就能按目录分组选择运行测试了。

额外的小建议
  • 你的CommonScenarios.cs和CommonFunctions.cs可以用来封装通用逻辑,比如导航到某个视图、登录、清理测试环境等,所有测试类都可以直接调用,减少重复代码
  • 每个UIMap只对应一个视图的元素,这种拆分方式非常好,能避免不同视图的元素命名冲突,后期修改某个视图的UI时,只需要更新对应的UIMap就行
  • 测试方法要保持独立性:每个测试方法最好只验证一个功能点,并且通过[TestInitialize]和[TestCleanup]保证每次测试的初始状态一致,避免测试之间互相影响

内容的提问来源于stack exchange,提问作者namiol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:24:47