哪个单元测试将强制编写下一个异步C#代码?
在此链接上,建议如何用c#编写异步方法,即:哪个单元测试将强制编写下一个异步C#代码?,c#,unit-testing,asynchronous,tdd,C#,Unit Testing,Asynchronous,Tdd,在此链接上,建议如何用c#编写异步方法,即: using System.Threading.Tasks; ... void Foo(){} ... new Task(Foo).Start(); 我的问题是如何对代码应用TDD方法,确切地说:我应该编写哪个单元测试来强制编写前面的代码 谢谢:)我想你应该问问自己,你到底在测试什么?在您提供的示例中: void Foo(){} Foo只是类上的一个方法,所以您可以创建一个测试来测试Foo的功能,而它与为异步代码编写测试无关 但是,如果Foo的返回
using System.Threading.Tasks;
...
void Foo(){}
...
new Task(Foo).Start();
我的问题是如何对代码应用TDD方法,确切地说:我应该编写哪个单元测试来强制编写前面的代码
谢谢:)我想你应该问问自己,你到底在测试什么?在您提供的示例中:
void Foo(){}
Foo只是类上的一个方法,所以您可以创建一个测试来测试Foo的功能,而它与为异步代码编写测试无关
但是,如果Foo的返回类型为Task
或Task
,则可以执行以下操作
鉴于班级:
public class Bar
{
public Task<string> Foo()
{
Console.WriteLine("foo called");
return Task.FromResult("123");
}
}
异步方法(特别是访问外部资源的方法)的编写应该使您可以像这样使用它:
wait Foo()
,而无需手动启动任务。对于强制编写异步函数,只需断言返回值的类型为Task
或Task
,这是一个旧的问题/答案,(just)在异步/等待可用之前
[TestClass]
public class BarTest
{
[TestMethod]
public async Task Test_Foo()
{
// Arrange
var bar = new Bar();
// Act
var result = await bar.Foo();
// Assert
Assert.AreEqual("123", result);
}
}