NUnit を使用して WPF コントロールをテストしています。テキスト フィクスチャは基本的に、新しいスレッドでテストするコントロールを含むテスト ウィンドウを開きます。次に、Microsoft UI オートメーション (UIA) を使用してコントロールを操作します。
新しいスレッドがウィンドウを表示し、ディスパッチャーを開始します。物事は期待どおりに機能します。
私たちが直面している問題は、このコントロールがダイアログを起動できることです。ダイアログが起動したら、対話して閉じる必要があります。このタスクを実行するためのこのダイアログへの参照を取得できませんでした。
うまくいかない解決策の 1 つは、Application.Current.Windows を使用してすべてのウィンドウを取得し、ダイアログが見つかるまで繰り返し処理することです。単体テスト中に Application.Current = null であるため、これは機能しません。このテストだけを気にする場合は、アプリケーションをインスタンス化するだけです。ただし、アプリケーション変数が範囲外になると (テストの最後に)、アプリケーションは自動的にシャットダウン モードになるため、これは他のテストに干渉します。その結果、他のテストは失敗します (最も顕著なのは、InitializeComponent が通常、シャットダウン モード中に呼び出すことができない System.Windows.Application.LoadComponent を呼び出すためです)。
必要なのは、Application.Current.Windows に代わるものだと思います。