【发布时间】:2013-05-13 07:57:02
【问题描述】:
您好想问一个奇怪的问题。它是关于测试 WPF 应用程序的。
我当前的测试对象是一个自发打开信息对话框的 WF 应用程序。这些对话框是模态的,每次都可以打开。这对于在该应用程序上运行的自动化测试来说是相当令人不安的。每当我的测试人员访问可视化树并尝试访问 GUI(如调用按钮等)时,可能会打开这样的对话框窗口,从而通过其模式阻止 GUI 并使测试失败。
解决此问题的一个方法是阻止这些对话框打开。我无法直接更改被测应用程序的行为,但我可以订阅所有窗口事件(如初始化、加载、渲染等)。我想使用其中一个事件来防止窗口打开并以模式方式阻塞 GUI。
我尝试使用加载的事件,因为它是实际显示窗口之前的最后一个事件,但是在相应的窗口上调用 Close() 会导致崩溃。我也试过 Hide()... 这可以防止窗口变得可见,但 GUI 仍然被不可见的对话框阻止。
是否有人知道如何有效地阻止 WPF 窗口/对话框打开或至少以模式方式阻止 GUI?
【问题讨论】:
-
即使您可以阻止它,您仍然必须为具有确定/取消/重试/...按钮的对话框提供返回值。无论如何,这里唯一真正的解决方案是显而易见的:应该修改源代码,以便使用某些 DI 框架最终提供的 IModelDialogService 之类的东西。然后在运行测试时,您提供该服务的实现,它什么都不做......
-
嗯……那些信息性的、自发的对话框除了标准的关闭按钮和“确定”按钮之外没有任何其他按钮。所有具有“重试”或“取消”等内容的对话框都不会自发打开,并且可以预期和系统地处理(我已经这样做了)。这样的基本对话框难道也没有办法吗?
标签: wpf events dialog window modal-dialog