【发布时间】:2014-08-22 22:48:31
【问题描述】:
我正在努力学习async-await programming model 和testing of async method using 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);
}
我为 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));
}
我想调试测试用例,以便了解异步编程模型中的控制流程。我放了三个断点,一个在
await Task.Delay(Delay);
,第二位
Thread.Sleep(10000);
第三名
Assert.Equal(expected,Convert.ToDouble(actual));
调试器按预期命中前两点,但从未命中第三个断点。不寻常的是,即使我确定失败了,测试也通过了。
【问题讨论】:
标签: c# .net unit-testing c#-5.0 xunit.net