2016-11-27 28 views
7

だから私は、次のようなテストがあります。xunit Assert.ThrowsAsync()が正しく動作しませんか?

[Fact] 
    public void Test1() 
    { 
     Assert.ThrowsAsync<ArgumentNullException>(() => MethodThatThrows()); 
    } 

    private async Task MethodThatThrows() 
    { 
     await Task.Delay(100); 
     throw new NotImplementedException(); 
    } 

驚いたことにを、Test1を正常に渡します。それは私がこのように記述する必要が失敗するようにするには:それは上記のシナリオでは動作しない場合

Assert.Throws<ArgumentNullException>(() => MethodThatThrows().Wait()); 

、)(ThrowsAsyncの目的は何ですか?

答えて

15

結果はawaitとなります(xunit's acceptance tests参照)。この特定の縮退場合

[Fact] public async Task Test1() 
{ 
    await Assert.ThrowsAsync<ArgumentNullException>(() => MethodThatThrows()); 
} 

、あなたはawaitを使用せずに、単にreturnTaskAssert.ThrowsAsyncその収率はできましたが、重要なのは、あなたが、バックのxUnitフレームワークに、すなわち

[Fact] 
public Task Test1() => 
    Assert.ThrowsAsync<ArgumentNullException>(MethodThatThrows); 
を結果 Taskを手する必要があります
関連する問題