Я пытаюсь выполнить модульное тестирование кода приложения Gui, в котором используется
Application.Current.Dispatcher.Invoke() и хотели бы использовать решение, предоставленное @informatorius, в аналогичном потоке Использование диспетчера WPF в модульных тестах. Код указан ниже.
У меня проблема в том, что Application не решается, даже если я добавлю using System.Windows. Есть ли какой-то особый механизм для решения
Application из библиотеки классов, которая определяет тестовые наборы?
У меня установлены пакеты MSTest.TestFramework и MSTest.TestAdapter.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class ApplicationInitializer
{
[AssemblyInitialize]
public static void AssemblyInitialize(TestContext context)
{
var waitForApplicationRun = new TaskCompletionSource<bool>();
Task.Run(() =>
{
var application = new Application();
application.Startup += (s, e) => { waitForApplicationRun.SetResult(true); };
application.Run();
});
waitForApplicationRun.Task.Wait();
}
[AssemblyCleanup]
public static void AssemblyCleanup()
{
Application.Current.Dispatcher.Invoke(Application.Current.Shutdown);
}
}
[TestClass]
public class MyTestClass
{
[TestMethod]
public void MyTestMethod()
{
// implementation can access Application.Current.Dispatcher
}
}





Отвечать указал мне правильное направление:
using System.Windows мало, еще нужно было добавить в проект ссылку на PresentationFramework. Не понимаю, что за этим стоит автомобильная магия.