Como: testes de força para parar sua execução após um período de tempo especificado
Você pode definir limites de tempo com o qual a execução de um teste ou uma execução de teste serão compatíveis.Talvez você precise fazer isso, por exemplo, se você trabalha em um laboratório de teste e precisa executar um teste para concluir uma determinada hora do dia.
Outro cenário para o uso de limites de tempo é que o código não-responsivo.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 Concluir para que possa continuar a execução do teste com testes subseqüentes.
Há duas maneiras de definir limites de tempo:
Setting Time-Out period for All Tests: 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 Especificando configurações de teste do Visual Studio.
Override the Per-Test Time-Out Value on Individual test: Você pode substituir o valor de tempo limite por teste definindo uma propriedade em um teste individual.Você não pode substituir o valor de tempo limite de execução de teste.
Você não pode definir tempos limite de teste para tipos específicos de teste.Tempos limite de teste não se aplicam a testes manuais, mas os limites de tempo de execução de teste estão sempre em vigor, mesmo para execuções de teste que contêm testes manuais.
Definir limites de tempo de execução de teste e de testes tem esses efeitos:
Quando a duração da execução de teste atinge seu valor de tempo limite, a execução de teste é interrompido, mesmo se alguns testes não foi executados.
Quando a duração de um teste individual atinge seu valor de tempo limite, interrompe a execução de teste e o teste é marcado como tempo limite.A execução de teste continua com o teste subseqüente.
Como métodos de inicialização afetam os tempos limite de teste
Uma 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 de execução de teste.
A quantidade de tempo que usam os métodos de inicialização é adicionada à quantidade de tempo que usa o primeiro teste.Isso pode ser expresso como uma fórmula que usa esses termos:
Dt = duração total
Dr = quantidade 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
O seguinte se aplica para todos os testes após o primeiro teste:
Dt**[Tn] = Dr[Tn]**
Mas observe o seguinte caso:
Dt**[T1] = Dr[T1] + D[I]**
O primeiro teste é 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 imposto no primeiro teste e, portanto, pode fazer esse teste falhar.
Observação |
---|
Essa limitação pode causar o primeiro teste falhar.Testes subseqüentes na execução do teste não são afetados. |
Se a execução de teste inclui métodos de inicialização, você pode contornar essa limitação da seguinte maneira: aplicar cada teste um tempo limite maior que a soma das horas de execução esperadas para o método de teste e quaisquer métodos de inicialização.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 métodos de limpeza afetam os tempos limite de execução de teste
Uma execução de teste pode incluir um AssemblyCleanupAttribute método e um ClassCleanupAttribute método.Após concluir esses métodos, o teste executar termina.
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 usado pela execução de teste.Em outras palavras, as contagens de tempo de limpeza em relação ao limite de tempo ter imposto no teste executado como um todo e, portanto, poderiam causar o execução de teste para tempo limite.
Definindo o período de tempo limite para todos os testes
Para definir o tempo limite para todos os testes usando o arquivo de configurações de testes de execução de teste
Abra o Solution Explorer.
Na pasta Solution Items de sua solução, clique duas vezes no arquivo de configurações de teste.
O Configurações caixa de diálogo aparece.
Escolha Test Timeouts.
Verificar anular um teste se exceder o tempo de execução total:
Defina o teste executar o valor de tempo limite, em horas, minutos e segundos.
Escolha Salvar e escolha Fechar.
Para essa configuração entrem em vigor, as configurações de teste que você editou devem ser as configurações de teste ativo.Para mais informações, consulte Como: selecionar as configurações de teste ativo do Microsoft Visual Studio.
Substituir o valor de tempo limite por teste no teste Individual
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 de tempo limite 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 (Microsoft Visual Basic):
<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 de tempo limite de execução de teste não é afetado.
Consulte também
Tarefas
Como: selecionar as configurações de teste ativo do Microsoft Visual Studio