【问题标题】:Hand Coding Coded UI Tests [closed]手工编码的 UI 测试 [关闭]
【发布时间】:2013-06-21 14:52:32
【问题描述】:

您好,我正在考虑使用编码 UI 测试 (CUIT) 来测试应用程序。我已经尝试过录制选项,但这对我来说不够灵活。如果您在不同尺寸的屏幕上使用它,它会损坏。

我知道您可以手动编写测试代码,但我找不到任何关于如何编写基本测试的好示例。这里有一些使用 CUIT 的示例,但这些帖子来自 2011 年,我不确定它们与 Microsoft 对 CUIT 的新升级有多大的相关性。

这些测试需要与我在 Visual Studio 2012 Ultimate 中的构建环境集成,这就是我不使用 Selenium 的原因。

我们将不胜感激代码示例或指向优秀教程的链接,但特别是我正在寻找有关如何开始手动编码我的 CUIT 的示例

【问题讨论】:

  • 您是否尝试过直接使用 UI 自动化框架?这是 Coded UI 测试的基础。我喜欢它的这个教程:blog.functionalfun.net/2009/06/…
  • 如何集成到你的构建环境中?
  • 我们正在考虑将其添加到构建配置中,就像自动化单元测试一样。我仍在等待能够编辑构建配置文件的访问权限,但希望它们不会太长
  • @Arran 这是将 CUIT 测试添加到您的构建环境的链接msdn.microsoft.com/en-us/library/ms182465(v=vs.100).aspx

标签: c# visual-studio automated-tests coded-ui-tests


【解决方案1】:

CodePlex (http://codeduicodefirst.codeplex.com/) 上的 Code First 编码 UI 测试 API 项目包括一个可供您下载的项目演示 - 应用程序和测试。它专为构建 CUIT 测试而设计,不依赖于记录/播放。

如果您要在纯代码的基础上工作,最需要的就是避免依赖于 CUIT 记录创建的自动生成的对象映射。 Code-First 项目使用映射到单个页面对象的类来解决这个问题 - 如果我没记错的话,您需要扩展项目代码以使用桌面应用程序。

(我与这个项目没有任何关系——它只是我发现的除了 CUITe 之外的唯一手工编码资源,而且 CUITe 有一段时间没有更新了,这是我最后一次看到的)。

【讨论】:

  • 最后一次更新是在 2012 年 3 月,已经下载了 3 (!) 次...
【解决方案2】:

不是很多开发人员都知道这一点,但可以使用 CodedUI 创建 Code First 测试。它没有被提倡,这很糟糕。 我认为录制选项是一个脆弱的选项。它使用鼠标坐标,这意味着您必须在 UI 更改时重新创建测试...

可维护的方法是使用Page Object pattern(也被 Selenium 等其他流行工具使用)。这会创建 UI 的抽象,从而为您提供更大的灵活性和强大的类型。

您将获得简单易读且最重要的是可维护的代码:

var storeHyperlink = new HtmlHyperlink(_browserWindow);
storeHyperlink.SearchProperties[HtmlHyperlink.PropertyNames.Id] = "StoreLink";
Mouse.Click(storeHyperlink);

Read more

【讨论】:

  • 很好的答案和链接 - 谢谢@Jowen
【解决方案3】:

这是一个视频,展示了如何进行 Code First 编码 UI 测试:

Coded UI Tests-DeepDive-Episode3-HandCoding

【讨论】:

【解决方案4】:

不确定是否有人仍在寻找如何最好地手动编写 Coded UI 测试的代码,但 imo 进入记录和播放路线以后会令人失望!最好的方法是创建一个自动化框架,该框架定义您想要与之交互的各个对象,并让页面对象来处理您的业务逻辑。如果您正在测试 Web 应用程序,您可以使用通用 UITestControls 或 HtmlControls 定义对象。例如:

public static UITestControl EditBox_Password
{
    get
    {
        if ( mEditBox_Password == null ||   ! mEditBox_Password.Exists )
        {
            mEditBox_Password = new UITestControl (browserWindow );
            mEditBox_Password.TechnologyName = "Web";
            mEditBox_Password.SearchProperties.Add (UITestControl.PropertyNames.ControlType , "Edit");
            mEditBox_Password.SearchProperties.Add ( UITestControl.PropertyNames.Name , "TxtPassword");
        }
        return mEditBox_Password ;
    }
}

如果您正在测试基于 Windows 的应用程序,那么您可以使用 WinControls 或 WpfControls 定义对象。

我最近在亚马逊(Hand Coding Coded UI)上买了一本书,它清楚地定义了如何设置框架和创建易于维护的代码。不确定它是否在任何书店都有售,但如果你想看看,这里是亚马逊上的链接

https://www.amazon.com/dp/1547000856/ref=sr_1_1?s=books&ie=UTF8&qid=1496767488&sr=1-1&keywords=1547000856

希望对你有帮助。

更新:刚刚在谷歌上搜索了一下,在http://www.arkenstone-ltd.com/testing-with-coded-ui/有这本书的折扣代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 2012-04-23
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2023-03-23
    • 2011-03-16
    相关资源
    最近更新 更多