【发布时间】:2018-08-11 02:23:50
【问题描述】:
我尝试对一个 Gui 应用程序代码进行单元测试,该代码使用
Application.Current.Dispatcher.Invoke() 并希望使用@informatorius 在类似线程Using the WPF Dispatcher in unit tests 中提供的解决方案。代码如下。
我的问题是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
}
}
【问题讨论】:
标签: c# unit-testing