testmethod - Cómo ordenar las pruebas NUnit
nunit.net core (5)
Actualización para NUnit 3.2.0 - ahora es compatible con OrderAttribute .
El OrderAttribute se puede colocar en un método de prueba para especificar el orden en que se ejecutan las pruebas. Ejemplo:
public class MyFixture
{
[Test, Order(1)]
public void TestA() { ... }
[Test, Order(2)]
public void TestB() { ... }
[Test]
public void TestC() { ... }
}
Más de una vez se ha hecho la pregunta en SO. Pero las únicas respuestas que se leen leen "no debería necesitar ordenar sus pruebas de unidad, es malo porque" o "puede evitar eso si ..."
Ya sé que es malo, por qué es malo, y técnicas para evitarlo. Pero eso no es lo que quiero saber. Me gustaría saber si es posible ordenar la ejecución de las pruebas NUnit, que no sea un orden alfabético. Para ser franco: en realidad quiero que el estado se propague de una prueba a la siguiente. Créeme que tengo una razón inteligente para esto, que desafía la filosofía habitual.
MSTest tiene la capacidad de "prueba ordenada", que es muy útil en ciertos casos. Me gustaría tener esa habilidad en NUnit. Se puede hacer?
Intente usar el argumento NameParameters
para pasar el TestName
con una cadena que desee, para que TestCase () sea ordenado por TestName.
[TestCase(..., TestName = "1stTest")]
[TestCase(..., TestName = "2ndTest")]
Para Nuint puedes usar el siguiente código.
[TestMethod]
[Priority(2)]
Sólo una actualización para NUnit 2.5.1. Según la documentación, hay casos en que incluso el orden alfabético no es compatible.
Orden de ejecución
En NUnit 2.5, los casos de prueba individuales se ordenan alfabéticamente y se ejecutan en ese orden. Con NUnit 2.5.1, los casos individuales no se ordenan, pero se ejecutan en el orden en que NUnit los descubre. Este orden no sigue el orden léxico de los atributos y con frecuencia variará entre compiladores diferentes o versiones diferentes de CLR.
Como resultado, cuando TestCaseAttribute aparece varias veces en un método o cuando se usan otros atributos que proporcionan datos en combinación con TestCaseAttribute, el orden de los casos de prueba es indefinido.
La solución alternativa (pirateo) es alfabetizar los nombres de sus casos de prueba. Ver este hilo:
https://bugs.launchpad.net/nunit-3.0/+bug/740539
Confiar en el orden alfabético es una solución alternativa que puede usar, pero no está documentado ni se admite más allá del orden visual de la pantalla. En teoría podría cambiar en cualquier momento. En la práctica, no cambiará hasta NUnit 3.0, por lo que está bastante seguro de usarlo como solución alternativa
Esta cita es de Charlie Poole, el desarrollador principal de NUnit.
También parece que tienen un esquema de cocción para respaldar las pruebas ordenadas en NUnit 3, aunque aún se está discutiendo cómo lo harán.