Dot-Net
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() 在上述場景中不起作用,它的目的是什麼?
你應該
await得到結果(參見xunit 的驗收測試)。[Fact] public async Task Test1() { await Assert.ThrowsAsync<ArgumentNullException>(() => MethodThatThrows()); }在這種特定的退化情況下,您可以不使用而只產生
return,Task但關鍵是您需要將結果交還給 xUnit 框架,即Assert.ThrowsAsync``await``Task[Fact] public Task Test1() => Assert.ThrowsAsync<ArgumentNullException>(MethodThatThrows);