Je configure des tests unitaires basés sur MSTest. Pour rendre ma vie plus facile, je veux utiliser une classe de base qui gère l'installation générique et taredown tous mes tests exigent. Ma classe de base ressemble à ceci:Utilisation de l'héritage dans MSTest
[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() { }
}
Ma classe de test réelle ressemble à ceci:
[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 fonction TestInitialize fonctionne comme prévu. Mais la fonction ClassInitialize ne s'exécute jamais. Il ne fonctionne si j'ajoute ce qui suit à ma classe enfant:
[ClassInitialize()]
public static void t(TestContext testContext) {
MyClassInitialize(testContext);
}
Est-il possible d'obtenir ma classe initialize de base fonction pour exécuter sans faire référence dans ma classe enfant?
Trop hacky à ajouter en guise de réponse: essayez d'utiliser un constructeur statique dans la classe de base. – roufamatic
J'ai fini par utiliser AssemblyInitialize(). Pas exactement ce que je voulais, mais je suppose que MSTest ne le fait pas. @Roufamatic, votre réponse est probablement le seul moyen. Si vous l'affichez, je l'accepterai. – oillio