重新启动
TAEF 允许测试指定它可能导致或要求计算机重启。 该功能由两到三个组件组成:用于将测试标记为可能导致或需要重启的元数据、请求 TAEF 执行重启或通知 TAEF 即将启动的测试重启的 API,以及一个命令选项,用于选择在本地执行时运行这些测试。
行为
重启计算机的特定语义需要对 TAEF 执行模型、设置和清理操作的保证以及成功和失败行为进行一些更改。
- 重启行为仅适用于具有相应元数据) 的测试 (,不适用于 (安装和清理) 的固定装置。
- 如果从具有相应标记的测试以外的任何位置使用重启 API,则函数不会返回。 相反,TAEF 会终止测试进程。 这表示编写测试的方式有一个 bug,应该修复测试代码。
- 测试固定装置不会在重启边界上运行。 这意味着无论测试是启动重启还是请求 TAEF 导致重启本身) 并且安装操作在重启后都不会在重启 (之前运行。
- 日志记录 (,因此,从你通知或请求重启到测试完成时,将忽略日志失败) 。
元数据
若要启用重新启动 API 的使用,应通过将 Reboot 可能 元数据设置为 “true”来标记测试。 此元数据遵循元数据继承的常规规则,因此,如果类中的任何测试可能重新启动 (可以在类级别指定它,但考虑到重启的相当重量级的性质,建议明确决定哪些测试可以和不能启动重启) 。 有关元数据规范的示例,请参阅有关 使用 C++ 创作 测试和使用 C# 创作测试 的文档。
API
有两个main函数用于处理计算机重启:
- 重新启动 (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);
管理
调用 WEX 中 中断 静态类中的两种方法之一 。TestExecution 命名空间,位于 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 将处理重新执行自身。
请注意,此选项在 Arm 计算机上不起作用,因为删除了 TAEF 依赖的功能,在重新启动后 (RunOnce 密钥) 恢复测试。
* 只要不使用任何不兼容的执行功能 (当前 并行 模式和 测试模式) 。
常见问题
如果选择“重新运行”,是否有任何方法可以判断是首次还是重启后调用测试?
TAEF 不提供任何功能来实现此目的。 重新运行选项的目的是使你能够根据计算机 (的状态(例如运行Windows 更新完成) )编写可能需要不确定重启次数的测试。 请考虑使用 ExecutionGroup 和 continue 选项将任务分解为在重启之前/之后按顺序发生的单独测试操作。
支持哪些 TAEF 测试类型?
此功能可用于本机、托管和脚本测试。