visual unit tests test studio framework for ejemplo c# mstest vs-unit-testing-framework

c# - unit - Las clases marcadas con TestInitialize y TestCleanup no se ejecutan



visual studio unit tests (3)

He estado luchando con este, espero que ayude a alguien más.

Al crear pruebas unitarias utilizando MsTest, descubrí que estaba repitiendo el mismo código en cada prueba y encontré un par de atributos útiles ( TestInitialize , TestCleanup , ClassInitialize y ClassCleanup ).

Supuestamente, cuando marca un método con uno de estos atributos, debe 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). Frustrantemente, esto no sucedió, y mis pruebas fallaron. Si se 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 por sí mismos.

Aquí hay un código de ejemplo que estaba usando:

[TestInitialize()] private void Setup() { _factory = new Factory(); _factory.Start(); }

Entonces, ¿por qué esto no se está ejecutando?



El truco es hacer public estos métodos:

[TestInitialize()] public void Setup() { _factory = new Factory(); _factory.Start(); }

Cuando son private no se ejecutan.


También tuve el problema y, debido a mi falta de comprensión de cómo se llaman los métodos, lo resolví con esto: haga que sus pruebas se hereden de la clase que contiene los métodos TestInitialize y TestCleanup.