Compartir a través de


Cómo: Establecer límites de tiempo para la ejecución de pruebas

Actualización: noviembre 2007

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:

  • Los valores de tiempo de espera para las pruebas y para las ejecuciones de prueba se establecen en la configuración de la ejecución de prueba. Para obtener más información sobre las configuraciones de ejecución de pruebas, consulte Cómo: Especificar la configuración de una ejecución de prueba y Cómo: Aplicar la configuración de una ejecución de prueba. Del mismo modo que con todas las opciones de configuración de ejecución, la configuración del tiempo de espera está en vigor cada vez que se ejecutan pruebas mientras está activa esa configuración de ejecución.

  • Se puede reemplazar el valor de tiempo de espera por prueba estableciendo una propiedad en una prueba individual. No se puede reemplazar el valor de tiempo de espera de la ejecución de prueba.

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 con el 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.

Para establecer el tiempo de espera de la ejecución de prueba

  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 la ejecución de prueba.

    Se abrirá el cuadro de diálogo de configuración de la ejecución de prueba.

  3. Haga clic en 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. Haga clic en Guardar y después, en Cerrar.

    Para que se aplique esta opción de configuración, la configuración de la ejecución de prueba que editó debe ser la configuración de ejecución activa. Para obtener más información, vea Cómo: Aplicar la configuración de una ejecución de prueba.

Para establecer el tiempo de espera por prueba utilizando la configuración de ejecució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 la ejecución de prueba.

    Se abrirá el cuadro de diálogo de configuración de la ejecución de prueba.

  3. Haga clic en Tiempos de espera de la prueba.

  4. Active Marcar una prueba individual como errónea si su tiempo de ejecución supera:

  5. Establezca el valor de tiempo de espera por prueba en horas, minutos y segundos.

  6. Haga clic en Guardar y después, en Cerrar.

    Para que se aplique esta opción de configuración, la configuración de la ejecución de prueba que editó debe ser la configuración de ejecución activa. Para obtener más información, vea Cómo: Aplicar la configuración de una ejecución de prueba.

Para establecer el tiempo de espera por prueba, utilizando una propiedad de la prueba

  1. Abra el Editor de lista de pruebas o la ventana Vista de pruebas.

  2. Haga clic en la prueba y, a continuación, presione F4.

    Se abre la ventana de propiedades y se muestran las propiedades correspondientes a la prueba.

  3. Establezca un valor en horas, minutos y segundos para la propiedad Tiempo de espera.

    Nota:

    El valor de tiempo de espera para una prueba manual es infinito. Este valor no se puede cambiar.

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

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 invalida el valor de tiempo de espera por prueba establecido en la configuración de la ejecución de prueba. pero no afecta al valor de tiempo de espera para la ejecución de prueba.

Vea también

Tareas

Cómo: Especificar la configuración de una ejecución de prueba

Cómo: Aplicar la configuración de una ejecución de prueba