我正在使用异步xUnit测试,我注意到不一致的传递行为:
public async Task FetchData()
{
//Arrange
var result = await arrangedService.FetchDataAsync().ConfigureAwait(false);
//Assert
}
我已经完成了此测试执行的调用堆栈,并且已经验证我的所有库代码在每个任务之后都在调用 .ConfigureAwait(false) . 但是,尽管如此,此测试和其他测试在执行 Run All 时会间歇性地失败,但是当我在调试器上完成时,会通过断言和手动检查 . 很明显,我没有正确地做某事 . 我已经尝试在测试中删除对 ConfigureAwait(false) 的调用,以防有特殊的xUnit同步上下文,但它没有改变任何东西 . 以一致的方式测试异步代码的最佳方法是什么?
EDIT 好的,这是我尝试创建一个运行的代码的超简化示例,以提供正在发生的事情的示例:
using Graph = Microsoft.Azure.ActiveDirectory.GraphClient;
public async Task FetchData()
{
var adUsers = baseUsers //IEnumerable
.Cast()
.ToList();
var nextPageUsers = Enumerable
.Range(GoodIdMin, GoodIdMax)
.Select(number => new Graph.U