使用 .NET 4.0 进行异步单元测试
Asynchronous unit tests with .NET 4.0
我有一套相当标准的单元测试。
[TestClass]
public class MyTestClass
{
[TestMethod]
public async Task MyClass_DoesStuff()
{
//...
await foo;
}
}
一切正常,但后来我需要降级到 .NET 4.0。我进行了必要的软件包安装并构建了所有内容。但是,现在我的单元测试不再有效。相反,我得到了这些错误:
UTA007: Method MyClass_DoesStuff defined in class MyTestClass does not have correct signature. Test method marked with the [TestMethod] attribute must be non-static, public, return-type as void and should not take any parameter. Example: public void Test.Class1.Test(). Additionally, return-type must be Task if you are running async unit tests. Example: public async Task Test.Class1.Test2()
也许测试运行程序无法识别 System.Threading.Tasks.Task
for .NET 4.0?我从 NuGet 安装了 Microsoft Async
、Microsoft BCL Build Components
和 Microsoft BCL Portability Pack
。
有没有办法让我进行 .NET 4.0 的异步单元测试?
编辑:
"duplicate" 这被标记为 (TestMethod: async Task TestSth() does not work with .NET 4.0) 是因为测试没有出现在测试资源管理器中,而在我的情况下,我在发布时遇到了错误。不是重复的。
async
和 await
是在 .NET 4.5 中引入的,因此您将无法在 .NET 4.0 中使用该语法。但是,我记得,Task
s 是在 .NET 4.0 中引入的,因此您可能可以直接使用 Task
来完成您的任务。
[TestMethod]
public Task MyClass_DoesStuff()
{
Task<Foo> foo = GetSomethingAsync();
var result = foo.Result;
}
最简单的解决方案是让您的单元测试项目以 .NET 4.5 为目标。这样,MSTest 将原生支持异步单元测试。
我有一套相当标准的单元测试。
[TestClass]
public class MyTestClass
{
[TestMethod]
public async Task MyClass_DoesStuff()
{
//...
await foo;
}
}
一切正常,但后来我需要降级到 .NET 4.0。我进行了必要的软件包安装并构建了所有内容。但是,现在我的单元测试不再有效。相反,我得到了这些错误:
UTA007: Method MyClass_DoesStuff defined in class MyTestClass does not have correct signature. Test method marked with the [TestMethod] attribute must be non-static, public, return-type as void and should not take any parameter. Example: public void Test.Class1.Test(). Additionally, return-type must be Task if you are running async unit tests. Example: public async Task Test.Class1.Test2()
也许测试运行程序无法识别 System.Threading.Tasks.Task
for .NET 4.0?我从 NuGet 安装了 Microsoft Async
、Microsoft BCL Build Components
和 Microsoft BCL Portability Pack
。
有没有办法让我进行 .NET 4.0 的异步单元测试?
编辑:
"duplicate" 这被标记为 (TestMethod: async Task TestSth() does not work with .NET 4.0) 是因为测试没有出现在测试资源管理器中,而在我的情况下,我在发布时遇到了错误。不是重复的。
async
和 await
是在 .NET 4.5 中引入的,因此您将无法在 .NET 4.0 中使用该语法。但是,我记得,Task
s 是在 .NET 4.0 中引入的,因此您可能可以直接使用 Task
来完成您的任务。
[TestMethod]
public Task MyClass_DoesStuff()
{
Task<Foo> foo = GetSomethingAsync();
var result = foo.Result;
}
最简单的解决方案是让您的单元测试项目以 .NET 4.5 为目标。这样,MSTest 将原生支持异步单元测试。