NUnitのテストメソッドを実行しているスレッドと、メインスレッドは違う。
この影響で、Application.Current.Dispatcher.CheckAccess() が false になり、UIをテストメソッドから処理すると例外が発生する。
Application.Current.Dispatcher.CheckAccess() がtrueになり、UI操作できるようにするには、System.Windows.Application.Current.Dispatcher.Invoke()から処理を実行する必要がある。
using System.Windows;
[Test]
public void WPF_MainUiThreadTest()
{
new Application();
Application.Current.Dispatcher.Invoke(() =>
{
if (Application.Current.Dispatcher.CheckAccess())
{
// ここにUI操作処理を書く
var a = "";
}
});
}
NUnitプロジェクトの参照に下記3つを、事前に追加しておく必要あり。
PresentationCore
PresentationFramewort
WindowsBase
最近のコメント