单元测试资源管理器不显示城域应用程序的异步单元测试

Spo*_*ock 19 c# unit-testing async-await microsoft-metro

不确定这是一个已知问题.我正在使用VS2012 RC(Ultimate)和Win8 Release Preview.我创建了一个单元测试库(metro style app),并编写了一个单元测试,其中包括async/await关键字.但是,当我编译单元测试项目时,单元测试资源管理器没有显示我写的测试.如果我排除了async/await关键字,那么单元测试资源管理器会出现在我刚写的测试中.有没有人以前遇到过这个,还是仅仅是我?

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public async void SomeAsyncTest()
    {
        var result = await StorageFile.GetFileFromPathAsync("some file path");
    }
}
Run Code Online (Sandbox Code Playgroud)

svi*_*ick 28

单位测试方法async必须返回Task,而不是void.

那是因为async void很难跟踪方法:单元测试库没有简单的方法可以找出测试完成的方法.(这很难,但我认为这不是不可能的.你可以通过使用自定义来做到这一点SynchronizationContext.)