3

我在使用 WinRT C# 构建的 Windows Store 应用程序中使用xUnit进行单元测试。被测代码调用了等待的异步方法,问题是有些有时会失败,有时会成功。我的猜测是,等待的代码的一些延续是在与捕获的不同的同步上下文中执行的,然后Task调用链中的某个地方没有等待。但是我找不到任何这样的地方。如何找到错误的原因?

4

1 回答 1

2

确保您的单元测试async Task不是async void. xUnit 尚不支持async void单元测试。

async void如果您在单元测试中遇到异常,则存在竞争条件,它可能会错误地成功(链接到我的博客文章,其中包含更多详细信息;它讨论了 MSTest,但 xUnit 也存在相同的情况)。

于 2012-11-04T14:46:32.310 回答