Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O TAEF permite que um teste especifique que ele pode causar ou exigir que o computador seja reiniciado. O recurso consiste em dois a três componentes: metadados para sinalizar o teste como possivelmente causando ou exigindo uma reinicialização, uma API para solicitar que o TAEF execute uma reinicialização ou notifique o TAEF de uma reinicialização iniciada por teste iminente e uma opção de comando para optar pela execução desses testes ao executar localmente.
Comportamento
A semântica particular de reiniciar o computador requer algumas alterações no modelo de execução do TAEF, nas garantias das operações de configuração e limpeza e no comportamento de sucesso e falha.
- O comportamento de reinicialização só está disponível para um teste (com os metadados apropriados), não para equipamentos (configuração e limpeza).
- Se a API de reinicialização for usada de qualquer lugar que não seja um teste com a marcação apropriada, a função não retornará. Em vez disso, o TAEF interrompe o processo de teste. Isso representa um bug na maneira como o teste foi escrito e o código de teste deve ser corrigido.
- Os cenários de teste não serão executados no ponto de reinício. Isso significa que as operações de desmontagem não são executadas antes da reinicialização (não importa se o teste inicia a reinicialização ou solicita que o TAEF cause a reinicialização em si) e as operações de instalação não serão executadas após a reinicialização.
- O registro em log (e, consequentemente, as falhas de log) será ignorado a partir do momento em que você notificar ou solicitar uma reinicialização até que o teste seja concluído.
Metadados
Para habilitar o uso das APIs de reinicialização, um teste deve ser sinalizado definindo os metadados RebootPossible como "true". Esses metadados obedecem às regras usuais de herança de metadados, portanto, podem ser especificados no nível da classe se qualquer teste em sua classe puder ser reiniciado (embora, dada a natureza bastante pesada da reinicialização, seria aconselhável tomar decisões explícitas sobre qual teste pode e não pode iniciar reinicializações). Consulte a documentação sobre testes de criação em C++ e testes de criação em C# para obter exemplos de especificação de metadados.
API
Existem duas funções principais para lidar com reinicializações de máquinas:
- Reboot(Option) solicita que o TAEF inicie uma reinicialização da máquina de teste.
- RebootCustom(Option) notifica o TAEF de que o teste causará uma reinicialização da máquina de teste. Esta API também suporta falha do sistema. O TAEF garantirá que os dados aplicáveis sejam apagados após o retorno da API.
O parâmetro Option especifica o comportamento de currículo, um dos seguintes:
- Execute novamente, fazendo com que o TAEF execute o mesmo teste novamente após a reinicialização ter ocorrido
- Continuar, fazendo com que o TAEF execute o próximo teste após a reinicialização ter ocorrido
Nativo
Acesse as APIs de reinicialização incluindo o cabeçalho Interruption.h e chamando as funções no namespace WEX::TestExecution::Interruption . As quatro chamadas possíveis são:
using namespace WEX::TestExecution;
Interruption::Reboot(RebootOption::Rerun);
Interruption::Reboot(RebootOption::Continue);
Interruption::RebootCustom(RebootOption::Rerun);
Interruption::RebootCustom(RebootOption::Continue);
Gerenciado
Chame qualquer um dos dois métodos na classe estática Interruption no WEX.TestExecution namespace, que está localizado dentro de Te.Managed.dll:
using WEX.TestExecution;
Interruption.Reboot(RebootOption.Rerun);
Interruption.Reboot(RebootOption.Continue);
Interruption.RebootCustom(RebootOption.Rerun);
Interruption.RebootCustom(RebootOption.Continue);
Uso do prompt de comando
O uso ideal para esse recurso é executar testes TAEF que potencialmente serão reiniciados com Cross Machine Execution ou através de WTT. Nesses casos, o TAEF permite a execução de reinicialização implicitamente* porque não deve interromper seu fluxo de trabalho. Se você estiver executando testes de reinicialização manualmente na máquina local ou precisar substituir o caminho padrão que o TAEF usa para armazenar em cache seu estado, você terá que aceitar explicitamente reiniciar os testes. Se não o fizer, qualquer teste de reinício será marcado como bloqueado. Para habilitar testes de reinicialização ao executar localmente, use o seguinte argumento de comando:
Te.exe /rebootStateFile:MyRestartFile.xml
O TAEF criará o arquivo especificado para armazenar seu estado (quais testes já foram executados, qualquer comando TAEF ou opções de ambiente, etc.) e retomará de onde parou quando for retomado após a reinicialização. O TAEF lida com a reexecução de si mesmo quando a máquina aparece novamente após a reinicialização.
Observe que essa opção não funciona em máquinas Arm devido à remoção de um recurso do qual o TAEF depende para retomar os testes após a reinicialização (tecla RunOnce).
* Desde que você não esteja usando nenhum recurso de execução incompatível (atualmente Modos Paralelo e de Teste).
Perguntas Frequentes
Se eu escolher Repetir, há alguma maneira de saber se o teste está sendo invocado pela primeira vez ou após uma reinicialização?
A TAEF não fornece nenhuma funcionalidade para que você consiga isso. A intenção da opção de repetição é permitir que você escreva testes que podem exigir um número indeterminado de reinicializações com base no estado da máquina (como executar o Windows Update até a conclusão). Considere usar um ExecutionGroup e a opção continue para dividir as tarefas em operações de teste separadas que ocorrem em sequência antes/depois da reinicialização.
Que tipos de teste TAEF são suportados?
Esse recurso está disponível para testes nativos, gerenciados e de script.