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