C# 单元测试资源管理器不显示metro应用程序的异步单元测试

C# 单元测试资源管理器不显示metro应用程序的异步单元测试,c#,unit-testing,microsoft-metro,async-await,C#,Unit Testing,Microsoft Metro,Async Await,不确定这是一个已知的问题。我正在使用VS2012 RC(旗舰版)和Win8版本预览版。我创建了一个单元测试库(metro风格的应用程序),并编写了一个单元测试,其中包括async/await关键字。但是,当我编译单元测试项目时,单元测试资源管理器不会显示我编写的测试。如果排除async/await关键字,那么单元测试资源管理器将显示在我刚刚编写的测试中。以前有没有人遇到过这个问题,还是只有我 [TestClass] public class UnitTest1 { [TestMethod

不确定这是一个已知的问题。我正在使用VS2012 RC(旗舰版)和Win8版本预览版。我创建了一个单元测试库(metro风格的应用程序),并编写了一个单元测试,其中包括async/await关键字。但是,当我编译单元测试项目时,单元测试资源管理器不会显示我编写的测试。如果排除async/await关键字,那么单元测试资源管理器将显示在我刚刚编写的测试中。以前有没有人遇到过这个问题,还是只有我

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

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


这是因为
asyncvoid
方法很难跟踪:单元测试库没有简单的方法可以发现测试已经完成。(这很难,但我认为这不是不可能的。您可以通过使用自定义的
SynchronizationContext
来实现)

如果让方法返回
任务,会发生什么?这很有趣。我想知道mstest是否错误地过滤了类中的方法,或者async关键字是否更改了签名,使其无法通过反射显示。svick,你说得对。任务使其出现在UTE中。@Raj:
async void
单元测试还不受支持。它们不能正常工作。异步单元测试必须是
async Task
@Stephen Cleary-感谢您的更新。