xUnit断言.All()异步

本文关键字:异步 All 断言 xUnit | 更新日期: 2023-09-27 17:58:37

我有一个使用xUnit:的示例测试

    [Fact]
    public void SomeTest()
    {
        Assert.All(itemList, async item=>
                {
                    var i = await Something(item);
                    Assert.Equal(item,i);
                });
    }

有没有一个好的解决方案可以使整个测试异步/不可用?

xUnit断言.All()异步

在xUnit 2.4.2及以上版本中,使用Assert.AllAsync。否则,您可以使用Task.WhenAll:

[Fact]
public async Task SomeTest()
{
    var itemList = ...;
    var results = await Task.WhenAll(itemList.Select(async item =>
    {
        var i = await Something(item);
        return i;
    }));
    Assert.All(results, result => Assert.Equal(1, result));
}

对于2023,接受的答案不再为真,xunit团队添加了Assert.AllAsync:https://github.com/xunit/xunit/discussions/2498