【问题标题】:xUnit Assert.All() asyncxUnit Assert.All() 异步
【发布时间】:2016-11-30 11:41:18
【问题描述】:

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

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

有没有一个好的解决方案可以让整个测试异步/等待?

【问题讨论】:

  • 将您的测试方法签名更改为public async Task SomeTest()
  • @Igor:这种变化只会让SomeTest() 表面上可以等待。 Assert.All() 的行为仍然相同。

标签: c# xunit xunit.net xunit2


【解决方案1】:

没有内置的异步 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));
}

【讨论】:

  • 不错的方法,但var results = await Task.WhenAll(tasks) 为您提供了一个很好的结果数组。
  • 谢谢@StephenCleary。已编辑。
猜你喜欢
  • 2014-05-21
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多