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();
}