unittest unitarias test pruebas integracion vs-unit-testing-framework

vs-unit-testing-framework - unitarias - test en python



Atributo ClassInitialize en la clase basada en la prueba unitaria no llamada (4)

Al declarar el atributo ClassInitialize en un método, el método debe ser estático, público, nulo y debe tomar un solo parámetro de tipo TestContext .

Si también tiene otro método con el atributo AssemblyInitialize en la misma prueba unitaria, se ejecutará la prueba, pero omitirá todos los métodos de prueba y se dirigirá directamente a AssemblyCleanup o simplemente se cerrará.

Pruebe el ejemplo en el atributo ClassInitialize en MSDN .

Agregué estos métodos en una clase TestBase:

[ClassInitialize] public static void InitializBeforeAllTests() { }

Pero cuando ejecuto en Debug una prueba unitaria Test1() :

[TestClass] public class TestMapping : TestBase { [TestMethod] public void Test1() { }

El método TestBase.InitializBeforeAllTests() nunca se llama. ¿Por qué?


El enlace MS ya no funciona. De todos modos, una forma de evitar este problema es simplemente mover su código de inicialización al constructor de la clase base. Esto asegurará que se llame desde cualquier clase descendiente siempre que se creen instancias.

[TestClass] public class TestBase { public TestBase() { // Initialization Code } } [TestClass] public class TestMapping : TestBase { [TestMethod] public void Test1() { // At this point the base constructor should have been called } }


Puede configurar un método de inicialización de ensamblaje en su clase base. No es exactamente lo mismo que ClassInitialize, pero es una opción viable. Fuente: la solución mencionada aquí.

[TestClass] public abstract class TestBase { [AssemblyInitializeAttribute] public static void Initialize(TestContext context) { // put your initialize code here } }

También puede agregar un método de limpieza:

[AssemblyCleanup] public static void Cleanup() { //clean up stuff here }


cualquiera sea el motivo, UnitTestExecuter del marco de pruebas unitarias solo permite definir un método ClassInitialize y un ClassCleanup por clase de prueba ... a diferencia de los métodos TestInitialize y TestCleanup, que se invocan tanto en la clase de prueba derivada como en la base ...