visual unitarias unit test studio pruebas practices microsoft ejemplo best unit-testing visual-studio-2010 mstest

unit testing - unitarias - Usando la herencia en MSTest



visual studio unit test (3)

Confirma que esto también fue un problema para mí. Usé un constructor en la base y un destructor para la limpieza.

Estoy configurando algunas pruebas unitarias basadas en MSTest. Para hacerme la vida más fácil, quiero usar una clase base que maneje la configuración genérica y el objetivo de todas mis pruebas. Mi clase base se parece a esto:

[TestClass] public class DBTestBase { public TestContext TestContext { get; set; } [ClassInitialize()] public static void MyClassInitialize(TestContext testContext) { var config = new XmlConfigurationSource("ARconfig_test.xml"); ActiveRecordStarter.Initialize(Assembly.Load("LocalModels"), config); } [TestInitialize()] public void MyTestInitialize() { ActiveRecordStarter.CreateSchema(); Before_each_test(); } protected virtual void Before_each_test() { } [TestCleanup()] public void MyTestCleanup() { After_each_test(); } protected virtual void After_each_test() { } }

Mi clase de prueba real se ve así:

[TestClass] public class question_tests : DBTestBase { private void CreateInitialData() { var question = new Question() { Name = "Test Question", Description = "This is a simple test question" }; question.Create(); } protected override void Before_each_test() { base.Before_each_test(); CreateInitialData(); } [TestMethod] public void test_fetching() { var q = Question.FindAll(); Assert.AreEqual("Test Question", q[0].Name, "Incorrect name."); } }

La función TestInitialize funciona como se espera. Pero la función ClassInitialize nunca se ejecuta. Se ejecuta si agrego lo siguiente a mi clase secundaria:

[ClassInitialize()] public static void t(TestContext testContext) { MyClassInitialize(testContext); }

¿Es posible que la función de inicialización de mi clase base se ejecute sin hacer referencia a ella en mi clase hija?


El método ClassInitialize se ejecuta solo si la "clase" en cuestión contiene al menos un TestMethod, y al menos un TestMethod de la clase se selecciona para su ejecución.


[TestClass] public class question_tests : DBTestBase { ... [TestCleanup()] public void TestCleanup() { base.MyTestCleanup(); }