NuGetを使用して、単体テストプロジェクトをバージョン2.0.0-beta- {something}から2.0.0(安定版)に移行しました。 Assert.DoesNotThrowAsync()
はもう利用できないようです。
例えば:
[Fact]
public void CanDeleteAllTempFiles() {
Assert.DoesNotThrowAsync(async () => DocumentService.DeleteAllTempDocuments());
}
結果は
DocumentServiceTests.cs(11,11):エラーCS0117:「Xunit.Assert」に「DoesNotThrowAsync」の定義が含まれていません(CS0117)
回避策はテストを省略することです。より良い解決策はありますか?
このディスカッション でわかるように、メソッドがxUnit v2でスローされないかどうかをテストするための推奨される方法は、単に呼び出すことです。
あなたの例では、それは次のようになります。
[Fact]
public async Task CanDeleteAllTempFiles() {
await DocumentService.DeleteAllTempDocuments();
}
回答を現在の情報で更新したかっただけです(2019年9月)。
Malcon Heckが述べたように、Recordクラスを使用することをお勧めします。 xUnitのGithub を見ると、スローされた例外がないかどうかを確認する現在の方法は次のようになっています。
[Fact]
public async Task CanDeleteAllTempFiles() {
var exception = await Record.ExceptionAsync(() => DocumentService.DeleteAllTempDocuments());
Assert.Null(exception);
}
あなたはこれを行うことができます:
_[Fact]
public void CanDeleteAllTempFiles() {
Assert.Null(
await Assert.RecordExceptionAsync(
async () => DocumentService.DeleteAllTempDocuments()
)
);
}
_
RecordException(Async)
は、変数にスローされた例外をキャプチャします。この例外は、必要に応じてアサートできます。