xUnit的Assert.All()异步方法

23

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

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

有没有一个好的解决方案可以使整个测试具备异步/等待功能?


将您的测试方法签名更改为public async Task SomeTest() - Igor
1
@Igor:这个更改只是使SomeTest()表面上可等待。 Assert.All()仍然以相同的方式运行。 - recursive
2个回答

33
在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));
}

3

1
适用于XUnit 2.4.2+。 - J2ghz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接