2016-07-26 54 views
3

我使用xUnit这个例子测试:的xUnit Assert.All()异步

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

是否有一个很好的解决方案,使整个测试异步/ awaitable?

+0

测试方法的签名更改为'公共异步任务SomeTest()' – Igor

+1

@Igor:这种变化不仅使'SomeTest()'表面上awaitable。 'Assert.All()'仍然表现相同的方式。 – recursive

回答

7

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

好方法,但是'var results = await Task.WhenAll(tasks)'给你一个很好的结果数组来处理。 –

+0

谢谢@StephenCleary。编辑。 –