[英]When MSTest fails in TestInitialize, why doesn't TestCleanup get executed?
[英]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.