Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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# Assert语句从未在异步测试中执行_C#_.net_Unit Testing_C# 5.0_Xunit.net - Fatal编程技术网

C# Assert语句从未在异步测试中执行

C# Assert语句从未在异步测试中执行,c#,.net,unit-testing,c#-5.0,xunit.net,C#,.net,Unit Testing,C# 5.0,Xunit.net,我正在努力学习和学习。我编写了一个简单的WCF服务计算器服务,它实现了基本的数学运算。我使用了异步等待模型来实现这些操作。添加函数如下所示: public async Task<double> AddAsync(double n1, double n2) { // Mimicking time consuming work await Task.Delay(Delay); return (n1 + n2); }

我正在努力学习和学习。我编写了一个简单的WCF服务计算器服务,它实现了基本的数学运算。我使用了异步等待模型来实现这些操作。添加函数如下所示:

public async Task<double> AddAsync(double n1, double n2)
    {
        // Mimicking time consuming work
        await Task.Delay(Delay);
        return (n1 + n2);
    } 
    [Fact]
    public async void ShouldAddAsync()
    {
        var calculatorSerivce = new CalculatorService();

        var result = calculatorSerivce.AddAsync(1, 1);
        // Mimicking independent work.
        Thread.Sleep(10000);

        var actual = await result;

        const double expected = 3;
        Assert.Equal(expected,Convert.ToDouble(actual));
    }
我想调试测试用例,以便理解异步编程模型中的控制流。我设置了三个断点,一个在

await Task.Delay(Delay);
,第二名

Thread.Sleep(10000)

第三个在

Assert.Equal(expected,Convert.ToDouble(actual));

调试器按预期命中前两点,但从未命中第三个断点。不寻常的是,即使我已经确定失败,测试还是通过了。

将您的
异步无效
测试方法更改为
异步任务
方法。正如我在一篇MSDN文章中所描述的,.

将您的
async void
测试方法更改为
async Task
方法。正如我在一篇MSDN文章中所描述的那样