再起動
TAEF を使用すると、テストでコンピューターの再起動を発生させたり、要求したりできるように指定できます。 この機能は 2 から 3 個のコンポーネントで構成されています。これには、再起動を発生させる、または要求する可能性があるとしてテストにフラグを設定するメタデータ、TAEF が再起動を実行するように要求する API、テストによって開始される再起動が差し迫っていることを TAEF に通知する API、ローカルで実行するときにこれらのテストの実行をオプトインするコマンド オプションです。
動作
コンピューターを再起動する特定のセマンティクスでは、TAEF 実行モデルの一部の変更、セットアップ操作とクリーンアップ操作の保証、成功と失敗の動作が必要です。
- 再起動動作は、フィクスチャ (セットアップとクリーンアップ) ではなく、(適切なメタデータを使用して) テストでのみ使用できます。
- 再起動 API が適切なマークアップを持つテスト以外の場所から使用されている場合、関数は戻りません。 代わりに、TAEF はテスト プロセスを強制終了します。 これは、テストの記述方法にバグがあることを表しており、テスト コードを修正する必要があります。
- テスト フィクスチャは、再起動の境界では実行されません。 つまり、再起動の前に破棄操作は実行されず (テストが再起動を開始するか、TAEF が再起動を行うように要求するかに関係なく)、再起動後にセットアップ操作は実行されません。
- ログ記録 (および結果としてログ エラー) は、通知または再起動を要求した時点から、テストが完了するまで無視されます。
Metadata
再起動 API の使用を有効にするには、RebootPossible メタデータを "true" に設定してテストにフラグを設定する必要があります。 このメタデータは、メタデータの継承の通常の規則に従うため、クラス内のテストが再起動する可能性がある場合は、クラス レベルで指定できます (ただし、再起動の負荷はかなり重いため、再起動を開始できるテストと開始できないテストを明示的に決定することをお勧めします)。 メタデータ仕様の例については、C++ でのテストの作成および C# でのテストの作成に関するドキュメントを参照してください。
API
マシンの再起動を処理するためのメインの関数は 2 つあります。
- Reboot(Option) は、TAEF がテスト マシンの再起動を開始することを要求します。
- RebootCustom(Option) は、テストによってテスト マシンの再起動が発生することを TAEF に通知します。 この API では、システム クラッシュもサポートされています。 TAEF を使用すると、API が戻った後に該当するデータがフラッシュされます。
Option パラメーターは、再開動作を指定します。これは、次のいずれかです。
- Rerun を指定すると、再起動が発生した後に TAEF は同じテストを再度実行します。
- Continue を指定すると、再起動が発生した後に TAEF は次のテストを実行します。
ネイティブ
再起動 API にアクセスするには、Interruption.h ヘッダーをインクルードし、WEX::TestExecution::Interruption 名前空間で関数を呼び出します。 次の 4 つの呼び出しが可能です。
using namespace WEX::TestExecution;
Interruption::Reboot(RebootOption::Rerun);
Interruption::Reboot(RebootOption::Continue);
Interruption::RebootCustom(RebootOption::Rerun);
Interruption::RebootCustom(RebootOption::Continue);
マネージド
WEX.TestExecution 名前空間にある Interruption 静的クラスの次の 2 つのメソッドのいずれかを呼び出します。このクラスは Te.Managed.dll 内にあります。
using WEX.TestExecution;
Interruption.Reboot(RebootOption.Rerun);
Interruption.Reboot(RebootOption.Continue);
Interruption.RebootCustom(RebootOption.Rerun);
Interruption.RebootCustom(RebootOption.Continue);
コマンド プロンプトの使用方法
この機能の理想的な使用方法は、マシン間での実行または WTT を使用して再起動する可能性のある TAEF テストを実行することです。 このような場合、TAEF はワークフローを中断しないようにするため、暗黙的に再起動の実行を有効にします*。 ローカル コンピューターでテストの再起動を手動で実行している場合、または TAEF が状態をキャッシュするために使用する既定のパスをオーバーライドする必要がある場合は、テストの再起動を明示的にオプトインする必要があります。 そうしないと、テストの再起動はすべてブロック済みとしてマークされます。 ローカルで実行するときに再起動テストを有効にするには、次のコマンド引数を使用します。
Te.exe /rebootStateFile:MyRestartFile.xml
TAEF は、状態 (既に実行されているテスト、TAEF コマンドや環境オプションなど) を格納するために指定されたファイルを作成し、再起動後は中断した場所から再開します。 TAEF は、再起動後にマシンが再び起動すると、自身の再実行を処理します。
TAEF が再起動後にテストを再開するために使用する機能 (RunOnce キー) が削除されたため、このオプションは Arm マシンでは機能しないことに注意してください。
* 互換性のない実行機能 (現在、並列モードとテストモード) を使用していない場合。
よく寄せられる質問
Rerun を選択した場合、テストが初めて呼び出されているか、再起動後であるかを確認する方法はありますか?
TAEF は、これを実現するための機能を提供しません。 再実行オプションの目的は、マシンの状態に基づいて、不確定な数の再起動が必要になる可能性があるテスト (Windows Update を完了まで実行するなど) を記述できるようにすることです。 ExecutionGroup と続行オプションを使用して、再起動の前後に順番に発生する個別のテスト操作にタスクを分割することを検討してください。
サポートされている TAEF テストの種類はどれですか?
この機能は、ネイティブ テスト、マネージド テスト、スクリプト テストで使用できます。