没有自动化框架的WPF自动化测试

本文关键字:WPF 自动化测试 框架 自动化 | 更新日期: 2023-09-27 17:50:14

这可能有点疯狂/疯狂,但是有没有办法在不使用MS自动化对等框架的情况下执行WPF自动化测试?

有几次当我真的需要的UIElement/FrameworkElement,并希望直接访问它。我一直在研究Snoop,试图解决这个问题,但看起来把它"注入"到一个过程中有点痛苦。

我已经尝试连接到启动的进程(我们目前正在使用SpecFlow),但是任何尝试编组进程或窗口线程(我已经寻找了实际的窗口的proc ID并尝试连接)结果从HwndSource为空。我也试图在我的单元测试中创建一个应用程序的实例,但看起来NUnit在后台启动应用程序(即使在STA线程上)有问题,因为第二个测试开始尝试加载,应用程序开始阻塞。

有没有人在其他事情上取得过成功?我现在唯一能"解决"这个问题的想法是创建一个特殊的AutomationPeer,我可以反射到它,然后从中获取FrameworkElement,或者类似的东西。

任何想法吗?

没有自动化框架的WPF自动化测试

不,没有任何东西可以跨进程编组WPF元素(特别是底层的本地元素,如图形资源、图像等),UI自动化通过定义跨进程工作。

如果你拥有目标应用程序,如果你为你的应用程序创建特定的AutomationPeers,你可以显著地增加它的"ui自动化"。

否则,snoop方法(进程注入)是唯一的方法(但是有很多缺点,包括安全问题)。

如果是这种情况:

在不使用MS自动化对等框架的情况下执行WPF自动化测试的任何方法?

您可以使用Telerik的测试工作室,它是丰富的和一些编码,你会习惯它。另一个优点是良好的文档和他们可以提供的帮助。

老实说,这花了我一段时间,但由于框架是免费的,我最终决定使用它而不是MS的替代品。