20

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

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

1 回答 1

29

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

这是因为async void方法很难跟踪:单元测试库没有简单的方法来发现测试是否完成。(这很难,但我认为这并非不可能。您可以通过使用自定义来做到这一点SynchronizationContext。)

于 2012-06-17T09:28:27.677 回答