unitarios unitarias test pruebas automatizadas c# mstest

c# - test - pruebas unitarias



¿Cómo determina MSTest el orden en el que se ejecutan los métodos de prueba? (3)

edit: nota, la pregunta 288805 es similar, sin embargo, específicamente estoy preguntando cómo elige MSTest el orden de prueba predeterminado . Por favor vea el resto de esta pregunta. Gracias Eilon por el enlace .

Estaba mirando un proyecto MSTest heredado. Las pruebas siempre se ejecutaban en el mismo orden. El orden no era alfabético y estaba rebotando entre los métodos en dos archivos * .cs TestMethod.

No cambié el orden físico del código heredado. Para mi conveniencia, agregué "MSTest01" al nombre del método de la primera prueba, "MSTest02" al nombre del método de la segunda prueba, etcétera.

Para mi sorpresa, el orden de ejecución de las funciones TestMethod cambió; # 3 primero, # 6 segundo, # 5 tercero, etcétera.

Cuando quité las cadenas "MSTestnn" de los nombres de las funciones de TestMethod, su orden de ejecución cambió de nuevo al orden anterior, es decir, una prueba del primer archivo .cs, dos pruebas del segundo archivo .cs, cinco pruebas del primero. archivo cs, etcétera.

Parece que la ubicación del archivo puede no ser un factor, mientras que el nombre de la función TestMethod puede ser un factor.

PREGUNTA: ¿alguien puede explicar cómo MSTest decide el orden de ejecución de las funciones de TestMethod?


Creo que MSTest ejecuta métodos de prueba ordenándolos por su "ID" (parece ser su espacio de nombres completo).

Creé un TestProject1 que contiene 4 pruebas unt (UnitTest1, ... 2, ... A, ... B). Cada prueba de unidad contiene 5 métodos de prueba (TestMethodA, ... B, ... 1, ... 2, ... 3). Fueron declarados con orden aleatorio dentro de sus clases de prueba. Ahora, cada vez que ejecuto MSTest, las pruebas se ejecutan con el mismo orden:

TestProject1.UnitTest1.TestMethod1 TestProject1.UnitTest1.TestMethod2 TestProject1.UnitTest1.TestMethod3 TestProject1.UnitTest1.TestMethodA TestProject1.UnitTest1.TestMethodB TestProject1.UnitTest2.TestMethod1 TestProject1.UnitTest2.TestMethod2 TestProject1.UnitTest2.TestMethod3 TestProject1.UnitTest2.TestMethodA TestProject1.UnitTest2.TestMethodB TestProject1.UnitTestA.TestMethod1 TestProject1.UnitTestA.TestMethod2 TestProject1.UnitTestA.TestMethod3 TestProject1.UnitTestA.TestMethodA TestProject1.UnitTestA.TestMethodB TestProject1.UnitTestB.TestMethod1 TestProject1.UnitTestB.TestMethod2 TestProject1.UnitTestB.TestMethod3 TestProject1.UnitTestB.TestMethodA TestProject1.UnitTestB.TestMethodB

La única forma de cambiar ese orden es renombrar un TestClass o un TestMethod. Si, por ejemplo, cambio el nombre de TestMethodB, de UnitTest1, a TestMethod4, se ejecutará antes que TestMethodA.

Para ver las ID de sus métodos de prueba, abra la ventana ''Vista de prueba'' de VS y luego haga clic con el botón derecho en el encabezado de una columna (por ejemplo, Nombre de prueba) -> "Agregar / eliminar columnas ..." y agregue la columna ''ID''.



En cuanto al orden de ejecución VSTest. Así es como está organizado en tu TestProject:

  1. Ordene los archivos cs en su proyecto por su tiempo de creación ASC
  2. Método Posición en cada archivo

Por ejemplo, tienes 3 archivos cs en el proyecto.

  • UnitTest1.cs - creado 01/01/1970 con los métodos TestMethod05 y TestMethod03
  • UnitTest2.cs: creado el 01/05/1970 con el método TestMethod02.
  • UnitTest3.cs: creado el 01/01/1970 con el método TestMethod01.

Entonces el orden de ejecución de la prueba es este:

TestProject1.UnitTest1.TestMethod05 TestProject1.UnitTest1.TestMethod03 TestProject1.UnitTest3.TestMethod01 TestProject1.UnitTest2.TestMethod02

Puedes ver el ''orden predeterminado'' usando el comando:

vstest.console.exe TestProject1.dll / ListTests