使用.NET 4.0进行异步单元测试

Jac*_*cob 6 .net unit-testing asynchronous .net-4.0 visual-studio-2013

我有一套相当标准的单元测试.

[TestClass]
public class MyTestClass
{
    [TestMethod]
    public async Task MyClass_DoesStuff()
    {
        //...
        await foo;
    }
}
Run Code Online (Sandbox Code Playgroud)

这一切都运行良好,但后来我需要降级到.NET 4.0.我做了必要的包安装,并把一切都建成了.但是,现在我的单位测试不再工作了.相反,我得到这些错误:

UTA007:类MyTestClass中定义的方法MyClass_DoesStuff没有正确的签名.使用[TestMethod]属性标记的测试方法必须是非静态的,public,return-type as void,不应该使用任何参数.示例:public void Test.Class1.Test().此外,如果您正在运行异步单元测试,则return-type必须为Task.示例:public async Task Test.Class1.Test2()

也许测试运行器不能识别System.Threading.Tasks.Task.NET 4.0?我安装Microsoft Async,Microsoft BCL Build Components以及Microsoft BCL Portability Pack来自的NuGet.

有没有办法让我在.NET 4.0上运行异步单元测试?

编辑:

标记为(TestMethod:async Task TestSth()不能与.NET 4.0一起使用的"重复" )是测试资源管理器中未显示的测试,而在我的情况下,我发布了错误.不重复.

Ste*_*ary 2

最简单的解决方案是使您的单元测试项目以 .NET 4.5 为目标。这样,MSTest 将原生支持异步单元测试。

  • @AltF4_:更改目标框架*仅针对单元测试项目*即使对于大型项目也应该相当快。它实际上是右键单击,属性,更改框架,保存。 (2认同)