TAEF 可讓測試指定它可能導致或要求電腦重新啟動。 此功能包含兩到三個元件:一是元數據,用於將測試標示為可能導致重新啟動或需要重新啟動,二是API,可要求TAEF執行重新啟動或通知TAEF即將由測試引發的重新啟動,三是命令選項,使得在本機執行這些測試時可以選擇加入。
行為
重新啟動電腦的特定語意需要對TAEF執行模型進行一些變更、設定和清除作業的保證,以及成功和失敗行為。
- 重新啟動行為僅適用於測試(具有適當的元數據),而不是設置(設定和清理)。
- 如果在非具有適當標記的測試情境中使用 Reboot API,則此函式將不會返回。 相反地,TAEF 會終止測試程式。 這代表撰寫測試的方式和測試程式代碼應該修正的錯誤。
- 測試裝置將不會在重新啟動界限上執行。 這表示在重新啟動之前不會執行拆解作業(無論是測試啟動重新啟動或 TAEF 自身引發重新啟動的要求),而且設置作業將不會在重新啟動之後執行。
- 從您通知或要求重新啟動的時候起,到測試完成為止,記錄(以及記錄失敗)將會被忽略。
元數據
若要啟用重新啟動 API 的使用,應該藉由將 RebootPossible 元數據設定為 「true」 來標示測試。 此元數據遵守元數據繼承的一般規則,因此,如果類別中的任何測試可能會重新啟動,則可以在類別層級指定它(雖然考慮到重新啟動的重量級本質,建議您明確決定哪些測試可以且無法起始重新啟動)。 如需元數據規格的範例,請參閱 在 C++ 中撰寫測試 及 在 C# 中撰寫測試 的文件。
應用程式介面
處理機器重新啟動有兩個主要功能:
- Reboot(Option) 要求TAEF起始測試機器的重新啟動。
- RebootCustom(Option) 會通知 TAEF 測試將導致測試機器重新啟動。 此 API 也支援系統當機。 TAEF 可確保在 API 傳回後刷新相關的數據。
Option 參數會指定履歷行為,其中一個:
- 重新執行,導致TAEF在重新啟動發生之後再次執行相同的測試
- 繼續,導致TAEF在重新啟動發生之後執行下一個測試
本地
藉由包含 Interruption.h 標頭並呼叫 WEX::TestExecution::Interruption 命名空間中的函式,來存取重新啟動 API。 四個可能的呼叫如下:
using namespace WEX::TestExecution;
Interruption::Reboot(RebootOption::Rerun);
Interruption::Reboot(RebootOption::Continue);
Interruption::RebootCustom(RebootOption::Rerun);
Interruption::RebootCustom(RebootOption::Continue);
管理
在 Te.Managed.dll 中的 WEX.TestExecution 命名空間中的 Interruption 靜態類別內呼叫其中任一兩種方法:
using WEX.TestExecution;
Interruption.Reboot(RebootOption.Rerun);
Interruption.Reboot(RebootOption.Continue);
Interruption.RebootCustom(RebootOption.Rerun);
Interruption.RebootCustom(RebootOption.Continue);
命令提示字元使用方式
這項功能的理想用法是執行TAEF測試,這些測試可能會隨著 跨電腦執行 或透過WTT重新啟動。 在這些情況下,TAEF 會隱含地啟用重新啟動執行*,因為它不應該中斷您的工作流程。 如果您要在本機計算機上手動進行重新啟動測試,或需要更改TAEF用來儲存其狀態的預設路徑,則必須明確選擇啟用重新啟動測試。 如果沒有,任何重新啟動的測試都會標示為封鎖。 若要在本機執行時啟用重新啟動測試,請使用下列命令自變數:
Te.exe /rebootStateFile:MyRestartFile.xml
TAEF 會建立指定的檔案來儲存其狀態(已執行哪些測試、任何 TAEF 命令或環境選項等),並在重新啟動後繼續時從該檔案中斷的位置繼續。 TAEF 在機器重新啟動後會自動重新執行。
請注意,此選項不適用於 Arm 機器,因為移除了 TAEF 所依賴的一個功能,這導致無法在重新啟動後繼續進行測試(RunOnce 金鑰)。
* 只要您未使用任何不相容的執行功能(目前 平行 和 測試模式)。
常見問題
如果我選擇 [重新執行],有什麼方法可以判斷測試是第一次執行還是因重新啟動而執行的?
TAEF 不會提供任何功能來達成此目的。 重新執行選項的意圖是讓您根據計算機的狀態撰寫可能需要不確定重新啟動次數的測試(例如執行 Windows Update 完成)。 請考慮使用 ExecutionGroup 和 continue 選項,將工作分解成在重新啟動之前/之後依序順序發生的個別測試作業。
支援哪些 TAEF 測試類型?
此功能適用於原生、受控和腳本測試。