51 votes

L'attribut ClassInitialize dans la classe basée sur les tests unitaires n'est pas appelé

J'ai ajouté ces méthodes dans une classe TestBase :

 [ClassInitialize]
public static void InitializBeforeAllTests()
{
}

Mais quand je lance dans Debug un test unitaire Test1() :

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

La TestBase.InitializBeforeAllTests() n'est jamais appelée. Pourquoi?

10voto

James Lawruk Points 8106

Vous pouvez configurer une méthode d'initialisation d'assembly dans votre classe de base. Pas tout à fait la même chose que ClassInitialize, mais c'est une option viable. Source : La solution de contournement mentionnée ici.

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

Vous pouvez également ajouter une méthode de nettoyage :

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

9voto

Paul Killick Points 137

pour une raison quelconque, UnitTestExecuter du framework de test unitaire ne permet de définir qu'une méthode ClassInitialize et une méthode ClassCleanup par classe de test... contrairement aux méthodes TestInitialize et TestCleanup, qui sont appelées à la fois dans la classe de test dérivée et de base...

7voto

Ronny Points 319

Je sais que c'est une très vieille question, mais c'est la première à apparaître dans la recherche Google lorsque vous recherchez un problème similaire, de toute façon, voici une mise à jour pour la réponse :

  [ClassInitialize(InheritanceBehavior.BeforeEachDerivedClass)]
 public static void YOUR_INIT_METHOD_NAME(TestContext context)

Remarque : vous avez besoin du package MSTest.TestFramework-Version 2.0.0 ou plus récent pour que cela fonctionne.

5voto

Sheldon Warkentin Points 805

On dirait qu'on vous a répondu sur le site de Microsoft

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X