【问题标题】:Coded UI Application Under Test测试中的编码 UI 应用程序
【发布时间】:2018-09-10 13:10:18
【问题描述】:

刚刚开始实施编码的 ui 测试自动化解决方案,但在启动应用程序时一直遇到问题。

应用程序似乎启动得很好,但无论如何我总是得到一个异常说明:

Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToLaunchApplicationException:“应用程序无法启动。这可能是由于以下原因之一: 1) 应用程序的另一个实例已经在运行,并且一次只能运行一个实例。 2) 应用程序启动了另一个进程,现在已经停止。您可能需要直接启动该过程。 3) 您对此应用程序没有足够的权限。”

该应用程序有点奇怪,因为它当前设置为使用 setup.exe 运行,因此用户始终拥有最新版本。

我的代码中是否遗漏了某些内容(示例如下)?或者在我开始编写自动化测试之前,是否需要更好地设置应用程序。 EXE 位于网络位置。

ApplicationUnderTest aut = ApplicationUnderTest.Launch(@"\\test.com\\applicationdir\\testenv\\application\\setup.exe");

WpfEdit userName = new WpfEdit(aut);
userName.SearchProperties.Add(WpfEdit.PropertyNames.AutomationId, "PART_UserName");

userName.Text = "TEST";

【问题讨论】:

  • 欢迎来到 stackoverflow :-)。您能否在帖子中添加更多信息,例如您已经采取了哪些步骤来确定问题的根源。您声明您从网络位置运行应用程序。它有助于在本地机器上运行它吗?当 VS 启动您的程序时,您是否以管理员身份启动 VS?从构建文件运行测试时问题是否仍然存在。它运行 setup.exe 是什么意思?您的测试是否需要先安装应用,然后再运行应用的 exe?
  • 在我的本地机器上运行时它不起作用并且我以管理员身份启动我的 VS。不太确定如何从构建文件运行测试,但会调查一下。
  • 如果有帮助,该应用程序是一次点击应用程序。
  • 对于构建文件,我指的是 bin\debug 或 bin\release 文件夹。当您在调试或发布模式下构建程序时,您的代码会被编译并且生成的文件会在这些文件夹中找到。我通过将 exe 路径(在发布文件夹中)存储在配置文件中来测试我需要测试的程序,使 CUIT 在“运行”窗口中键入它并启动 exe。
  • 我没有使用 ClickOnce 应用程序的经验,但在有关 ClickOnce 的 wiki 页面上发现它使用代码访问安全性 (CAS)。您可以检查这是否会导致任何麻烦。另见en.wikipedia.org/wiki/Code_Access_Security

标签: c# .net automated-tests coded-ui-tests


【解决方案1】:

目前使用一种解决方法,我通过 Process 启动应用程序,然后将其传递给正在测试的应用程序 FromProcess()。似乎解决了这个问题。

可能不是最好的解决方案,必须使用 Thread.Sleep() 但它现在可以工作。

例子:

var process = Process.Start(@"pathToApplication");

Thread.Sleep(2000);

process = Process.GetProcessesByName("process.Name")[0];

ApplicationUnderTest aut = ApplicationUnderTest.FromProcess(process);

【讨论】:

  • 如果进程在 2 秒内不存在,您的测试将失败。等待应用程序启动的更优雅的方法是使用带有超时的 while 循环。您可以使用Process 类中的一个函数来检查该进程是否存在于您当前的进程列表中。这样一来,您的代码将在进程启动后立即继续,或者在超时时失败。
  • 感谢您的提示。使用了一个 while 循环,现在它更稳定了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2012-10-05
  • 2014-11-10
  • 2015-07-08
  • 2012-03-15
  • 1970-01-01
  • 2013-10-23
相关资源
最近更新 更多