我們使用NUnit來測試WPF控件。 文本夾具基本上會打開一個測試窗口,其中包含要在新線程上測試的控件。然後使用Microsoft UI自動化(UIA)與控件進行交互。單元測試WPF控件訪問子對話框
新線程顯示窗口並啓動調度程序。事情按預期工作。
我們遇到的問題是這個控件可以啓動一個對話框。一旦對話框啓動,我們需要與它交互並關閉它。我一直無法獲得此對話框的參考來完成此任務。
一個不起作用的解決方案是使用Application.Current.Windows獲取所有窗口,然後遍歷它們直到找到對話框。這不起作用,因爲在單元測試期間Application.Current = null。現在,如果我們只關心這個測試,我們可以實例化一個應用程序。但是這會干擾其他測試,因爲當Application變量超出範圍時(在測試結束時),應用程序將自動進入關閉模式。因此,其他測試將失敗(最顯着的原因是InitializeComponent通常會調用System.Windows.Application.LoadComponent,在關閉模式期間無法調用它)。
我想我們需要的是Application.Current.Windows的替代方案。