我正在编写一个应用程序,该应用程序是在 VS 2012 中使用 Async 库针对 .NET 4.0 编写的。
我的自动构建在安装了 VS 2012 和 .NET 4.5 的 TFS 2010 构建代理上运行。
我到处都读到,如果你的单元测试是异步的,它必须有 async Task TestMethod()
签名(而不是 async void TestMethod()
)。
但是,当我这样做时,我的构建服务器会针对该方法给出此错误:
Test method marked with the [TestMethod] attribute must be non-static, public, does not return a value and should not take any parameter. for example: public void Test.Class1.Test().
我已阅读 this和 this这表明如果您有 .testsetting 文件,它可能会导致此错误。但它们都表示它们适用于 TFS/VS 2012 的测试版。
另外,我需要我的测试设置文件来打开代码覆盖率。
这是 TFS 2012 唯一的东西吗? TFS 2010 Build agent 不使用 VS 2012 可以正确运行这些吗?
有没有办法在不升级到 TFS 2012 的情况下使这项工作正常进行?(我们距离升级还有几个月的时间)。
最佳答案
您可以使用类似于我描述的方法 on my blog : 只需将每个单元测试的代码包装在 AsyncContext.Run
中(您可以从我的 AsyncEx NuGet library 中获取 AsyncContext
)。
关于.net - 使用 TFS 2010 运行异步任务单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283322/