Como: Definir limites de tempo para execução de testes
Você pode definir limites de tempo com o qual a execução de um teste ou uma sequência de testes serão compatíveis. Talvez seja necessário fazer isso, por exemplo, se você trabalha em um laboratório de teste e precisa executar um teste para concluir em determinada hora do dia.
Outro cenário para o uso de limites de tempo é se o código não responda. Se um teste encontrar uma seção de código que não responde, o uso de um tempo limite de teste e um tempo limite de execução de teste permite que o teste individual para que a execução do teste possa continuar com testes subseqüentes de término.
Há duas maneiras de definir limites de tempo:
Você definir valores de tempo limite para testes e teste é executado em configurações de teste. Para obter mais informações sobre configurações de teste, consulte Criar um teste automatizado de configurações para executar testes a partir de Visual Studio.
Você pode substituir o valor Tempo limite por teste definindo uma propriedade em um teste individual. Você não pode substituir o valor de Tempo limite da execução do teste.
Você não pode definir tempos limite de teste para tipos específicos teste. Tempos limite de teste não se aplicam a testes manuais, mas os tempos limite de execução teste estão sempre em vigor, mesmo para execução de testes que contêm testes manuais.
Definir limites tempo para testes e executa teste possui esses efeitos:
Quando a duração de uma sequência de teste atinge seu valor de tempo limite, a execução de teste é interrompida, mesmo se alguns testes não tiverem sido executados.
Quando a duração de um teste individual atinge seu valor de tempo limite, a execução desse teste pára e o teste é marcado como Timeout. A execução do teste continua com o teste subsequente.
Como os métodos de inicialização afetam tempos limite de teste
Execução de teste pode incluir um AssemblyInitializeAttribute método e um ClassInitializeAttribute método. Se esses métodos são definidos, eles terão uma quantidade finita de tempo para concluir e inicia o primeiro teste na execução de teste.
A quantidade de tempo a usar os métodos de inicialização é adicionada à quantidade de tempo que o primeiro teste usa. Podemos expressar isso como uma fórmula que usa esses termos:
Dt = duração total
Dr = o período de tempo que um teste é executado
I = métodos de inicialização para o assembly e a classe
Tn = teste é executado em uma posição aleatória dentro de uma execução de teste
T1 = teste é executado na primeira posição dentro de uma execução de teste
A seguir se aplicam para todos os testes após o primeiro teste:
Dt**[Tn] = Dr[Tn]**
Mas lembre-se caso a seguir:
Dt**[T1] = Dr[T1] + D[I]**
O primeiro teste que é executado pode ter um valor de tempo limite por teste atribuído. Nesse caso, o tempo de inicialização é incluído no limite de tempo que é imposto no primeiro teste, e portanto pode causar esse teste falhar.
Observação |
---|
Essa limitação pode causar o primeiro teste falhar. Testes subseqüentes na execução de teste não são afetados. |
Se a sua execução de teste inclui métodos de inicialização, você pode contornar essa limitação da seguinte maneira: Aplica um tempo limite que for maior que a soma das horas de execução esperadas para o método de teste e quaisquer métodos de inicialização para cada teste. Você teria de fazer isso para cada teste. Porque o teste de unidade não garante a ordem na quais testes executados, você não pode prever qual teste será executado primeiro.
Como os métodos de limpeza afetam tempos limite de execução de teste
Execução de teste pode incluir um AssemblyCleanupAttribute método e um ClassCleanupAttribute método. Depois de concluir a esses métodos, o teste executado extremidades.
A execução de teste pode ter um valor de tempo limite atribuído. A quantidade de tempo que é usado pelos métodos de limpeza é adicionada à quantidade total de tempo que é usado pela execução de teste. Em outras palavras, as contagens de tempo de limpeza em relação ao limite de tempo ter ser imposto no teste executado como um todo e, portanto, podem causar o execução de teste para tempo limite.
Para definir o Tempo limite da execução do teste
Abra Solution Explorer.
Na pasta Solution Items da sua solução, clique duas vezes no arquivo de configurações de teste.
O Configurações caixa de diálogo aparece.
Clique em Test Timeouts.
Verificar Abort a test run if its total execution time exceeds:
Defina o valor do Tempo limite para a execução do teste, em horas, minutos e segundos.
Clique em Save e clique Close.
Para esta configuração entrem em vigor, as configurações de teste que você editou devem ser as configurações de testes ativas. Para obter mais informações, consulte Como: Aplicar configurações de teste do Microsoft Visual Studio.
Para definir o tempo limite por teste usando as configurações de teste
Abra Solution Explorer.
Na pasta Solution Items da sua solução, clique duas vezes no arquivo de configurações de teste.
O As configurações de teste caixa de diálogo aparece.
Clique em Test Timeouts.
Verificar Mark an individual test as failed if its execution time exceeds:
Definir o valor do Tempo limite por teste, em horas, minutos e segundos.
Clique em Save e clique Close.
Para esta configuração entrem em vigor, as configurações de teste que você editou devem ser as configurações de testes ativas. Para obter mais informações, consulte Como: Aplicar configurações de teste do Microsoft Visual Studio.
Para definir o tempo limite por teste utilizando uma propriedade de teste
Abrir o Editor de lista de teste ou Test View janela.
Clique no teste e pressione F4.
A janela Propriedades abre, e as propriedades para esse teste são exibidas.
Para o Timeout propriedade, defina o valor em horas, minutos e segundos.
Observação O valor do tempo limite para um teste manual é infinito. Você não pode alterar esse valor.
Para este teste somente, o valor que você definir substitui o valor de tempo limite por teste definido nas configurações de teste. O valor do tempo limite de execução de teste não é afetado.
Para definir o tempo limite por teste usando um atributo de um teste de unidade
Abra o arquivo de código-fonte de um teste de unidade.
Localize o atributo TestMethod do teste.
Adicione o atributo Timeout e um parâmetro que expressa o valor de tempo limite.
O valor de tempo limite é expresso em milissegundos.
Exemplo (Visual C#):
[TestMethod(), Timeout(80)] public void MyTestMethod() { // test code }
Exemplo (de Visual Basic da Microsoft):
<TestMethod(), Timeout(80)> _ Public Sub MyTestMethod() ' test code End Sub
Para este teste somente, o valor que você definir substitui o valor de tempo limite por teste definido nas configurações de teste. O valor do tempo limite de execução de teste não é afetado.
Consulte também
Tarefas
Como: Aplicar configurações de teste do Microsoft Visual Studio