You can use a single-threaded SynchronizationContext
in my AsyncEx library called AsyncContext
:
[TestMethod]
public void MyTest()
{
AsyncContext.Run(async () =>
{
Assert.IsNotNull( SynchronizationContext.Current );
await MyTestAsync();
DoSomethingOnTheSameThread();
});
}
However, this does not fully fake a specific UI environment, e.g., Dispatcher.CurrentDispatcher
will still be null
. If you need that level of faking, you should use the SynchronizationContext
implementations from the original Async CTP. It shipped with three SynchronizationContext
implementations that could be used for testing: a general-purpose one (similar to my AsyncContext
), one for WinForms, and one for WPF.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…