Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个单元测试将强制编写下一个异步C#代码?_C#_Unit Testing_Asynchronous_Tdd - Fatal编程技术网

哪个单元测试将强制编写下一个异步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的返回

在此链接上,建议如何用c#编写异步方法,即:

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);
    }
}