簡體   English   中英

引發未處理的異常時不調用 MsTest TestCleanup 方法

[英]MsTest TestCleanup method not called when an unhandled exception is thrown

我有一個測試,它使用外部程序集訪問我們正在測試的應用程序中的 UI 功能。 如果 UI 未處於適當的狀態,此程序集將引發其自己的自定義類型的異常。

我已經設置了一個 TestCleanup 方法來終止應用程序的進程(當 TestInitialize 啟動它時),以便在測試運行完成后,UI 以干凈的狀態重新啟動。

這在常規條件下工作得很好,但是,每當引用程序集拋出異常時,它永遠不會進入清理方法並直接跳轉到下一個測試。 測試本身拋出的異常不會發生這種情況,例如 AssertFailedException。 我什至嘗試從測試中拋出一個基本的異常,然后它進入了清理方法。

不幸的是,這與 C# 在構造函數中處理異常的方式不同:發生這種情況時,將調用終結器。

但是你可以直接從 catch 塊調用 CleanUp 方法

        [TestCleanup]
        public void Clenup()
        {
               ..............
        }


        [TestMethod]
        public void Test1()
        {
            try
            {...................}
            catch (Exception e)
            {
                 Cleanup();
                 throw new Exception();
            }
         }

這已在 MsTest v2 中修復。

https://github.com/Microsoft/testfx/issues/250

摘自上述鏈接:

這是一個有意識的兼容中斷,讓單元測試編寫者可以選擇清理部分初始化的方法。

暫無
暫無

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

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