Поделиться через


Перезагрузить

TAEF позволяет тесту указать, что он может вызвать или потребовать перезагрузки компьютера. Эта функция состоит из двух-трёх компонентов: метаданные, чтобы пометить тест как потенциально вызывающий или требующий перезапуска; API, чтобы заказывать перезапуск TAEF или уведомлять TAEF о предстоящем перезапуске, инициированном тестом; и командная опция для того, чтобы добровольно подключаться к выполнению этих тестов при локальном запуске.

поведение

Необходимость перезапуска компьютера требует некоторых изменений в модели выполнения TAEF, гарантий операций установки и очистки, а также характеристик поведения в случаях успеха и неудачи.

  • Поведение перезапуска доступно только для теста (с соответствующими метаданными), а не для исправлений (настройка и очистка).
  • Если API перезагрузки используется в любом месте, кроме теста с соответствующей разметкой, функция не возвращается. Вместо этого TAEF убивает процесс тестирования. Это представляет ошибку в том, как был написан тест, и код теста должен быть исправлен.
  • Тестовые фикстуры не будут запускаться на этапе перезапуска. Это означает, что операции удаления не выполняются перед перезапуском (независимо от того, инициирует ли тест перезапуск или запросы, вызывающие сам перезапуск TAEF), и операции установки не будут выполняться после перезапуска.
  • Ведение журнала (и, следовательно, сбои журнала) будет игнорироваться с момента уведомления или запроса перезапуска до завершения теста.

метаданные

Чтобы включить использование API перезагрузки, необходимо пометить тест, установив для метаданных RebootPossible значение true. Эти метаданные подчиняются обычным правилам наследования метаданных, поэтому его можно указать на уровне класса, если любой тест в классе может перезапустить (хотя учитывая довольно тяжелый характер перезапуска, рекомендуется принять явные решения о том, какой тест может и не может инициировать перезапуски). См. документацию по созданию тестов на C++ и созданию тестов на C# для примеров спецификации метаданных.

API

Существует две основные функции для обработки перезапусков компьютера:

  • перезагрузка (опция) запрашивает, чтобы TAEF инициировал перезапуск компьютера для тестирования.
  • ПерезагрузкаCustom(Option) уведомляет TAEF о том, что тест будет вызывать перезагрузку тестового компьютера. Этот API также поддерживает сбой системы. TAEF обеспечит очистку применимых данных после возврата API.

Параметр в опции указывает поведение возобновления, одним из следующих вариантов:

  • повторный запуск, что приводит к выполнению того же теста TAEF после перезапуска.
  • продолжить, что приводит к тому, что TAEF выполняет следующий тест после перезапуска.

Родной

Доступ к API перезагрузки осуществляется через включение заголовочного файла "Interruption.h" и вызов функций в пространстве имен WEX::TestExecution::Interruption. Четыре возможных вызова:

using namespace WEX::TestExecution;
Interruption::Reboot(RebootOption::Rerun);
Interruption::Reboot(RebootOption::Continue);
Interruption::RebootCustom(RebootOption::Rerun);
Interruption::RebootCustom(RebootOption::Continue);

Управлено

Вызовите любой из двух методов в статическом классе Interruption в пространстве имен 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 или параметры среды и т. д.) и возобновит работу с того места, где остановился, после перезапуска. TAEF автоматически вновь запускается после того, как компьютер включится после перезагрузки.

Обратите внимание, что этот параметр не работает на компьютерах Arm из-за удаления функции, от которой TAEF зависит от возобновления тестов после перезагрузки (ключ RunOnce).

* Если вы не используете несовместимые функции исполнения (на данный момент Параллельный и Режим тестирования).

часто задаваемые вопросы

Если выбрать повторное выполнение, можно ли определить, вызывается ли тест в первый раз или после перезапуска?

TAEF не предоставляет никаких функциональных возможностей для достижения этого. Цель функции повторного запуска состоит в том, чтобы предоставить возможность записи тестов, которым может потребоваться неопределенное количество перезапусков в зависимости от состояния компьютера (например, полное завершение процесса обновления Windows). Рассмотрите использование ExecutionGroup и опции продолжения для разбиения задач на отдельные тестовые операции, которые выполняются по порядку до и после перезапуска.

Какие типы тестов TAEF поддерживаются?

Эта функция доступна для собственных, управляемых и скриптовых тестов.