Saltar al contenido

Controlando el orden de ejecución de las pruebas unitarias en Visual Studio

Nuestros desarrolladores estrellas agotaron sus reservas de café, investigando diariamente por la respuesta, hasta que Daniel halló el resultado en Bitbucket y en este momento la comparte aquí.

Solución:

Puedes usar lista de reproducción

Haga clic derecho en el método de prueba -> Agregar a la lista de reproducción -> Nueva lista de reproducción

el orden de ejecución será a medida que los agregues a la lista de reproducción pero si quieres cambiarlo tienes el archivo

ingrese la descripción de la imagen aquí

Combinar sus pruebas en una prueba gigante funcionará. Para que el método de prueba sea más legible, puede hacer algo como

[TestMethod]
public void MyIntegratonTestLikeUnitTest()

    AssertScenarioA();

    AssertScenarioB();

    ....


private void AssertScenarioA()

     // Assert


private void AssertScenarioB()

     // Assert

En realidad, el problema que tiene sugiere que probablemente debería mejorar la capacidad de prueba de la implementación.

Como ya debería saber, los puristas dicen que está prohibido realizar pruebas ordenadas. Eso puede ser true para pruebas unitarias. MSTest y otros marcos de pruebas unitarias se utilizan para ejecutar pruebas unitarias puras, pero también pruebas de interfaz de usuario, pruebas de integración completa, lo que sea. Tal vez no deberíamos llamarlos frameworks de Unit Test, o tal vez deberíamos usarlos de acuerdo a nuestras necesidades. Eso es lo que la mayoría de la gente hace de todos modos.

Estoy ejecutando VS2015 y DEBO ejecutar pruebas en un orden dado porque estoy ejecutando pruebas de IU (Selenium).

Prioridad – No hace nada en absoluto Esto attribute no es utilizado por el sistema de prueba. Se proporciona al usuario con fines personalizados.

prueba ordenada – funciona pero no lo recomiendo porque:

  1. Un prueba ordenada un archivo de texto que enumera sus pruebas en el orden en que deben ejecutarse. Si cambia el nombre de un método, debe corregir el archivo.
  2. El orden de ejecución de la prueba se respeta dentro de una clase. No puede ordenar qué clase ejecuta sus pruebas primero.
  3. Un prueba ordenada el archivo está vinculado a una configuración, ya sea Debug o Release
  4. Puedes tener varios prueba ordenada archivos pero un método dado no se puede repetir en diferentes prueba ordenada archivos Entonces no puedes tener uno prueba ordenada archivo para Debug y otro para Release.

Otras sugerencias en este hilo son interesantes, pero pierde la capacidad de seguir el progreso de la prueba en Test Explorer.

Te queda la solución que los puristas desaconsejarán, pero de hecho es la solución que funciona: ordenar por orden de declaración.

El ejecutor de MSTest usa una interoperabilidad que logra obtener el orden de declaración y este truco funcionará hasta que Microsoft cambie el código del ejecutor de prueba.

Esto significa que el método de prueba que se declara en primer lugar se ejecuta antes que el que se declara en segundo lugar, etc.

Para facilitarle la vida, el orden de declaración debe coincidir con el orden alfabético que se muestra en el Explorador de pruebas.

  • A010_Primera prueba
  • A020_Segunda prueba
  • etc.
  • A100_décima prueba

Sugiero encarecidamente algunas reglas antiguas y probadas:

  • use un paso de 10 porque necesitará insertar un método de prueba más adelante
  • evite la necesidad de volver a numerar sus pruebas usando un paso generoso entre los números de prueba
  • use 3 dígitos para numerar sus pruebas si está ejecutando más de 10 pruebas
  • use 4 dígitos para numerar sus pruebas si está ejecutando más de 100 pruebas

MUY IMPORTANTE

Para ejecutar las pruebas por orden de declaración, debe utilizar ejecutar todo en el Explorador de pruebas.

Digamos que tiene 3 clases de prueba (en mi caso, pruebas para Chrome, Firefox y Edge). Si selecciona una clase determinada y hace clic con el botón derecho Ejecutar pruebas seleccionadas generalmente comienza ejecutando el método declarado en último lugar.

De nuevo, como dije antes, orden declarada y orden enumerado debe coincidir o de lo contrario te meterás en un gran problema en poco tiempo.

Comentarios y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *