C# Assert语句从未在异步测试中执行
我正在努力学习和学习。我编写了一个简单的WCF服务计算器服务,它实现了基本的数学运算。我使用了异步等待模型来实现这些操作。添加函数如下所示: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); }
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文章中所描述的那样