He estado luchando con esta, espero que ayude a otra persona.Clases marcadas con TestInitialize y TestCleanup sin ejecución
Si bien la creación de pruebas unitarias utilizando MSTEST descubrí que estaba repitiendo el mismo código en cada prueba, y se encontró un par de atributos prácticos (TestInitialize
, TestCleanup
, ClassInitialize
y ClassCleanup
).
Supuestamente, cuando marca un método con uno de estos atributos, debería ejecutarse automáticamente (antes de cada prueba, después de cada prueba, antes de todas las pruebas y después de todas las pruebas, respectivamente). Frustrante, esto no sucedió, y mis pruebas fallaron. Si llama directamente a estos métodos desde las clases marcadas con el atributo TestMethod
, las pruebas tuvieron éxito. Era evidente que no se estaban ejecutando solos.
Aquí algunos ejemplos de código que estaba usando:
[TestInitialize()]
private void Setup()
{
_factory = new Factory();
_factory.Start();
}
Por qué es esto no ejecutar?
También no funcionarán si estático. – stuartdotnet
@Stefan de Kok: Increíble que lo haya pasado por alto. ¡Gracias por la pista! – christoph
También no funcionarán si son asíncronas. – andrew