2016-07-26 16 views
3

非同期(async)私はxUnitを使用して、この例のテストを持っている:のxUnit Assert.All()

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

は、全体のテスト非同期/ awaitableを作るための良い解決策はありますか?

+0

。 'Assert.All()'も同じように動作します。 – Igor

+1

@Igor)(タスクSomeTest非同期公衆'にテストメソッドのシグネチャを変更し – recursive

答えて

7

ビルトイン非同期のAllはありません。あなたはTask.WhenAllを使用することができます。この変更は唯一 `SomeTest()`表面的にawaitableを行います

[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。編集されました。 –

関連する問題