xUnit Assert.All()async

J2g*_*ghz 7 c# xunit xunit.net xunit2

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

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

是否有一个很好的解决方案可以使整个测试异步/等待?

Eli*_*bel 12

没有内置的异步All.你可以使用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));
}
Run Code Online (Sandbox Code Playgroud)

  • 好的方法,但`var results = await Task.WhenAll(tasks)`给你一个很好的结果数组来使用. (2认同)

Mr *_*nce 3

至于 2023 年,已接受的答案不再正确,xunit 团队补充道Assert.AllAsynchttps ://github.com/xunit/xunit/discussions/2498