Перезагрузка
TAEF позволяет тесту указать, что он может вызвать или потребовать перезагрузку компьютера. Эта функция состоит из двух-трех компонентов: метаданных, которые помечают тест как потенциально вызывающий или требующий перезагрузки, API для запроса на выполнение перезапуска TAEF или уведомления TAEF о предстоящем перезапуске, инициированном тестом, и параметр команды для согласия на выполнение этих тестов при локальном выполнении.
Поведение
Конкретная семантика перезагрузки компьютера требует некоторых изменений в модели выполнения TAEF, гарантии операций установки и очистки, а также поведения успешного и неудачного выполнения.
- Режим перезапуска доступен только для тестирования (с соответствующими метаданными), а не для приспособлений (установка и очистка).
- Если API перезагрузки используется из любого места, кроме теста с соответствующей разметкой, функция не возвращается. Вместо этого TAEF завершает процесс тестирования. Это представляет собой ошибку в способе написания теста и необходимо исправить код теста.
- Тестовые средства не будут выполняться на границе перезапуска. Это означает, что операции удаления не выполняются до перезапуска (независимо от того, инициирует ли тест перезапуск или запросы, которые TAEF вызывает сам перезапуск), и операции установки не будут выполняться после перезапуска.
- Ведение журнала (и, следовательно, сбои журнала) будет игнорироваться с момента уведомления или запроса на перезапуск до завершения теста.
Метаданные
Чтобы включить использование API перезагрузки, тест следует пометить, задав для метаданных RebootPossible значение true. Эти метаданные подчиняются обычным правилам наследования метаданных, поэтому их можно указать на уровне класса, если любой тест в классе может перезапуститься (хотя, учитывая довольно тяжелый характер перезапуска, было бы целесообразно принимать явные решения о том, какой тест может и не может инициировать перезапуск). Примеры спецификации метаданных см. в документации по созданию тестов в C++ и созданию тестов в C# .
API
Существует две main функции для обработки перезапусков компьютера:
- Reboot(Option) запрашивает, чтобы TAEF инициировал перезапуск тестового компьютера.
- RebootCustom(Option) уведомляет TAEF о том, что тест вызовет перезапуск тестового компьютера. Этот API также поддерживает сбой системы. TAEF гарантирует, что применимые данные будут сброшены после возврата API.
Параметр Option указывает поведение возобновления, одно из следующих значений:
- Повторный запуск, в результате чего TAEF снова выполнит тот же тест после перезапуска.
- Продолжить, заставив TAEF выполнить следующий тест после перезапуска.
Родной
Получите доступ к API перезагрузки, включив заголовок Interruption.h и вызвав функции в пространстве имен WEX::TestExecution::Прерывание . Ниже приведены четыре возможных вызова.
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);
Использование командной строки
Идеальное использование этой функции — выполнение тестов TAEF, которые могут быть перезапущены с помощью выполнения на нескольких компьютерах или через WTT. В таких случаях TAEF включает выполнение перезапуска неявно*, так как это не должно нарушать рабочий поток. Если выполняется перезапуск тестов вручную на локальном компьютере или необходимо переопределить путь по умолчанию, используемый TAEF для кэширования своего состояния, необходимо явно согласиться на перезапуск тестов. В противном случае любой тест перезапуска будет помечен как заблокированный. Чтобы включить тесты перезапуска при локальном выполнении, используйте следующий аргумент команды:
Te.exe /rebootStateFile:MyRestartFile.xml
TAEF создаст указанный файл, чтобы сохранить его состояние (тесты которого уже были выполнены, любые команды TAEF или параметры среды и т. д.) и возобновит его с того места, где он был выключен после перезапуска. TAEF обрабатывает повторное выполнение после повторного запуска компьютера после перезапуска.
Обратите внимание, что этот параметр не работает на компьютерах Arm из-за удаления функции, от которую зависит TAEF, чтобы возобновить тесты после перезагрузки (ключ RunOnce).
* Если вы не используете несовместимые функции выполнения (в настоящее время параллельный и тестовый режимы).
Часто задаваемые вопросы
Если я нажму кнопку Повторно запустить, можно ли определить, вызывается ли тест в первый раз или после перезапуска?
TAEF не предоставляет никаких функциональных возможностей для этого. Параметр повторного запуска позволяет создавать тесты, для которых может потребоваться неопределенное количество перезапусков в зависимости от состояния компьютера (например, выполнение клиентский компонент Центра обновления Windows до завершения). Рассмотрите возможность использования ExecutionGroup и параметра continue, чтобы разбить задачи на отдельные тестовые операции, которые выполняются последовательно до или после перезапуска.
Какие типы тестов TAEF поддерживаются?
Эта функция доступна для собственных, управляемых и скриптовых тестов.