簡體   English   中英

單元測試異步void MVC Controller方法無法運行

[英]Unit Testing async void MVC Controller methods don't run

我正在嘗試測試userController,以通過其服務使用戶異步,從而使測試方法無效。 事實是,所有內容都可以編譯,但是測試無法運行。

[TestClass]
public class UserControllerTests
{
   [TestMethod]
   public async void UserController_GetAll_Returns_Not_Null()
   {
    var result = await controller.GetALL();

    Assert.IsNotNull(result);
   }
}

我在“亞歷山大的嵌入式Techwire”此處的鏈接中找到了答案,只是更改了異步任務的異步無效性。

“異步無效”方法是“即發即棄”的方法,它們可能永遠不會回來,並且在需要從方法中收集結果和斷言的測試環境中,這根本沒有意義。

    [TestClass]
    public class UserControllerTests
    {
       [TestMethod]
       public async Task UserController_GetAll_Returns_Not_Null()
       {
          var result = await controller.GetALL();

          Assert.IsNotNull(result);
       }
   }

如果您仔細查看輸出窗口,則在“測試檢​​測”(或它所稱的名稱)下,您會看到MSTest正在向您發出警告UTA007。

相反,xUnit默認情況下支持它們,而Fixie會檢測到它們並顯式地使它們失敗。

如您所見,最好的解決方案是將異常async void更改為更為自然的async Task async Task可與所有現代單元測試框架一起使用。

在我的幻燈片中 ,我有更多關於異步單元測試的詳細信息,這些幻燈片來自我今年在ThatConference上發表的關於該主題的演講。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM