Compartilhar via


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ê 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çãoObservaçã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

  1. Abra Solution Explorer.

  2. 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.

  3. Clique em Test Timeouts.

  4. Verificar Abort a test run if its total execution time exceeds:

  5. Defina o valor do Tempo limite para a execução do teste, em horas, minutos e segundos.

  6. 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

  1. Abra Solution Explorer.

  2. 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.

  3. Clique em Test Timeouts.

  4. Verificar Mark an individual test as failed if its execution time exceeds:

  5. Definir o valor do Tempo limite por teste, em horas, minutos e segundos.

  6. 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

  1. Abrir o Editor de lista de teste ou Test View janela.

  2. Clique no teste e pressione F4.

    A janela Propriedades abre, e as propriedades para esse teste são exibidas.

  3. Para o Timeout propriedade, defina o valor em horas, minutos e segundos.

    ObservaçãoObservaçã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

  1. Abra o arquivo de código-fonte de um teste de unidade.

  2. Localize o atributo TestMethod do teste.

  3. 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