Compartir a través de


Cómo: Hacer que las pruebas dejen de ejecutarse tras un período de tiempo especificado

Puede establecer límites de tiempo para la ejecución de una prueba o una ejecución de prueba.Es posible que tenga que hacerlo, por ejemplo, si trabaja en un laboratorio de pruebas y necesita completar una ejecución de prueba antes de determinada hora del día.

Otro escenario para el uso de límites de tiempo es cuando se trabaja con código que no responde.Si una prueba encuentra una sección de código que no responde, el uso de un tiempo de espera para la prueba y un tiempo de espera para la ejecución de pruebas permite que finalice la prueba individual de modo que la ejecución de pruebas pueda continuar con las pruebas siguientes.

Hay dos maneras de establecer los límites de tiempo:

No se pueden establecer tiempos de espera para tipos de prueba específicos.Los tiempos de espera de pruebas no son aplicables a pruebas manuales, pero los tiempos de espera de ejecución de prueba siempre están en vigor, incluso para ejecuciones de prueba que contengan pruebas manuales.

El establecimiento de límites de tiempo para pruebas y para ejecuciones de prueba tiene estos efectos:

  • Cuando la duración de una ejecución de prueba alcanza el valor del tiempo de espera que le corresponde, se anula la ejecución de prueba, aun cuando algunas pruebas no se hayan ejecutado.

  • Cuando la duración de una prueba individual alcanza el valor de tiempo de espera que le corresponde, la ejecución de esa prueba se detiene y la prueba se marca como Tiempo de espera agotado.La ejecución de prueba continúa con la prueba siguiente.

Cómo afectan los métodos de inicialización al tiempo de espera de las pruebas

Una ejecución de pruebas puede incluir un método AssemblyInitializeAttribute y un método ClassInitializeAttribute.Si se definen estos métodos, tardarán una cantidad finita de tiempo en completarse y, a continuación, se iniciará la primera ejecución de pruebas.

La cantidad de tiempo que consumen los métodos de inicialización se suma a la cantidad de tiempo que tarda la primera prueba.Podemos expresarlo como una fórmula con los términos siguientes:

  • Dt = duración total

  • Dr = cantidad tiempo que tarda en ejecutarse una prueba

  • I = métodos de inicialización para el ensamblado y la clase

  • Tn = prueba que se ejecuta en una posición aleatoria de una ejecución de pruebas

  • T1 = prueba que se ejecuta en la primera posición de una ejecución de pruebas

Lo siguiente es aplicable a todas las pruebas siguientes a la primera:

Dt**[Tn] = Dr[Tn]**

Pero cabe destacar el caso siguiente:

Dt**[T1] = Dr[T1] + D[I]**

La primera prueba que se ejecuta puede tener asignado un valor de tiempo de espera para la prueba.En este caso, el tiempo de inicialización se descontará del límite de tiempo impuesto a la primera prueba, por lo que podría impedir que se ejecutase correctamente.

[!NOTA]

Esta limitación únicamente puede impedir la realización de la primera prueba.Las pruebas subsiguientes de la ejecución de pruebas no se ven afectadas.

Si la ejecución de pruebas incluye métodos de inicialización, puede evitar esta limitación de la manera siguiente: aplique a cada prueba un tiempo de espera mayor que la suma de los tiempos de ejecución esperados para el método de prueba y todos los métodos de inicialización.Deberá hacerlo para cada prueba.Dado las pruebas unitarias no garantizan el orden en que se ejecutan las pruebas, no se puede predecir qué prueba se ejecutará en primer lugar.

Cómo afectan los métodos de limpieza al tiempo de espera de la ejecución de pruebas

Una ejecución de pruebas puede incluir un método AssemblyCleanupAttribute y un método ClassCleanupAttribute.Después de completarse estos métodos, la ejecución de pruebas finaliza.

La ejecución de pruebas podría tener asignado un valor de tiempo de espera.La cantidad de tiempo consumido por los métodos de limpieza se suma a la cantidad total de tiempo que tarda la ejecución de pruebas.En otros términos, el tiempo de limpieza se descuenta del límite de tiempo impuesto a la ejecución de pruebas en su conjunto y, por consiguiente, podría hacer que se agote el tiempo de espera de la ejecución de pruebas.

Establecer el valor máximo de tiempo para las pruebas

Establecer el tiempo máximo de ejecución para todas las pruebas con el archivo de configuración de pruebas

  1. Abra el Explorador de soluciones.

  2. En la carpeta Elementos de la solución correspondiente a su solución, haga doble clic en el archivo de configuración de pruebas.

    Se muestra el cuadro de diálogo Opciones de configuración.

  3. Elija Tiempos de espera de la prueba.

  4. Active Anular una ejecución de prueba si su tiempo de ejecución total supera:

  5. Establezca el valor de tiempo de espera de la ejecución de prueba en horas, minutos y segundos.

  6. Elija Guardar y elija Cerrar.

    Para que se aplique esta opción de configuración, la configuración de pruebas que editó debe ser la configuración de pruebas activa.Para obtener más información, vea Cómo: Seleccionar la configuración de pruebas activa desde Microsoft Visual Studio.

Reemplace el valor de tiempo de espera por prueba de prueba individual

Para establecer el tiempo de espera por prueba utilizando un atributo de una prueba unitaria

  1. Abra el archivo de código fuente de una prueba unitaria.

  2. Busque el atributo TestMethod de la prueba.

  3. Agregue el atributo Timeout y un parámetro que exprese el valor del tiempo de espera.

    El valor de tiempo de espera se expresa en milisegundos.

    Ejemplo (Visual C#):

    [TestMethod(), Timeout(80)]
    public void MyTestMethod()
    {
    // test code
    }
    

    Ejemplo (Microsoft Visual Basic):

    <TestMethod(), Timeout(80)> _
    Public Sub MyTestMethod()
    ' test code
    End Sub
    

    Para esta prueba solamente, el valor que establezca reemplaza el valor de tiempo de espera por prueba establecido en la configuración de pruebas.pero no afecta al valor de tiempo de espera para la ejecución de prueba.

Vea también

Tareas

Cómo: Seleccionar la configuración de pruebas activa desde Microsoft Visual Studio