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

时间:2015-05-21 14:40:21

标签: c# wpf integration-testing ui-automation microsoft-ui-automation

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

有几次我实际上需要 UIElement / FrameworkElement并希望直接访问它。我正在调查Snoop尝试处理它,但看起来“注入”一个过程有点痛苦。

我已经尝试连接到启动的进程(我们当前正在使用SpecFlow),但任何尝试编组Process或Window线程(我已经查找了实际的Window的proc ID并尝试连接)会导致来自HwndSource的null。我试图在我的单元测试中创建一个Application实例,但看起来NUnit在后台启动应用程序时遇到了问题(即使在STA线程上),因为第二个测试开始尝试加载,应用程序开始阻止。

有没有人在做别的事情上取得任何成功?我现在唯一能够“解决”问题的想法是创建一个我可以反思的特殊AutomationPeer,然后从中获取FrameworkElement,或类似的东西。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

不,没有任何东西可以跨进程封送WPF元素(特别是底层的本机元素,如图形资源,图像等),UI自动化按流程定义。

如果您拥有目标应用程序,那么如果您创建特定于您的应用程序的AutomationPeers,则可以大大增加其“UIAutomation-ness”。

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

答案 1 :(得分:0)

如果是这种情况:

  

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

你可以使用Telerik's Testing Studio,它很丰富,而且你可以使用一些编码。另一个好处是好documentation以及他们可以提供的帮助。

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