async
修飾子が付いlambda
と、次の非同期xUnit.net
テストでは、例外がスローされなかったことを報告することによって失敗:xUnit .netのAssert.Throwsでタスクによってスローされた例外を処理する方法<T>?
[Theory, AutoWebData]
public async Task SearchWithNullQueryThrows(
SearchService sut,
CancellationToken dummyToken)
{
// Fixture setup
// Exercise system and verify outcome
Assert.Throws<ArgumentNullException>(async() =>
await sut.SearchAsync(null, dummyToken));
// Teardown
}
がArgumentNullException
は、実際に私は明示的にtry-catch
ブロックを使用スローされることを確認するために。 lambda
とAssert.Throws<T>
がasync
修飾子でマークされたのはなぜ
[Theory, AutoWebData]
public async Task SearchWithNullQueryThrows(
SearchService sut,
CancellationToken dummyToken)
{
// Fixture setup
var expected = typeof(ArgumentNullException);
Type actual = null;
// Exercise system
try
{
await sut.SearchAsync(null, dummyToken);
}
catch (ArgumentNullException e)
{
actual = e.GetType();
}
// Verify outcome
Assert.Equal(expected, actual);
// Teardown
}
は失敗します。それは、しかし、結果のコードは、(最初のテストと比較して)きれいではない働いていましたか?
これは既知の問題です:http://xunit.codeplex.com/workitem/9799 – DaveShaw
+1それリリース2.0.0-alphaが関連付けられているスナップショット「16883cb2351f」の前のスナップショット「03e3be9a6781」に修正されているようです。ただし、NuGet Package Managerを使用してソリューションを更新しても、それはまだ機能しません。 –