Dar*_*nik 0 .net c# unit-testing xunit.net c#-5.0
我正在尝试学习async-await编程模型和使用XUnit.net 1.9.2测试异步方法.我写了一个简单的WCF服务CalculatorService,它实现了基本的数学运算.我使用async-await模型来实现这些操作.添加功能如下:
public async Task<double> AddAsync(double n1, double n2)
{
// Mimicking time consuming work
await Task.Delay(Delay);
return (n1 + n2);
}
Run Code Online (Sandbox Code Playgroud)
我为AddAsync函数编写了一个测试用例.测试用例如下:
[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));
}
Run Code Online (Sandbox Code Playgroud)
我想调试测试用例,这样我就能理解异步编程模型中的控制流程.我放了三个断点,一个在
await Task.Delay(Delay);
Run Code Online (Sandbox Code Playgroud)
,第二个
Thread.Sleep(10000);
第三个
Assert.Equal(expected,Convert.ToDouble(actual));
Run Code Online (Sandbox Code Playgroud)
调试器按预期达到前两个点但从未达到第三个断点.不寻常的是,尽管我确定了失败,但测试正在通过.