168 votes

TestInitialize est congédié pour chaque test, dans mes tests unitaires de Visual Studio ?

J’utilise Visual Studio 2010 bêta 2. J’ai un seul , qui a un , et quelques .

Chaque fois qu’une méthode de test est exécuté, les méthodes initialize et cleaup sont également couru !

J’étais sous l’impression que la & devraient seulement être couru une seule fois, par une série de tests locale.

Est-ce exact ? Sinon, quelle est la bonne façon de faire cela ?

332voto

alexn Points 25639

TestInitialize et TestCleanup est couru avant et après chaque test, c'est pour s'assurer qu'aucun des tests sont couplés.

Si vous souhaitez exécuter des méthodes d'avant et d'après TOUS les tests, décorer méthodes pertinentes avec le ClassInitialize et ClassCleanup attributs.

De l'information pertinente à partir de la génération automatique de test de fichier dans Visual Studio:

Vous pouvez utiliser les attributs supplémentaires que vous écrivez vos tests:

// Use ClassInitialize to run code before running the first test in the class
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext) { }

// Use ClassCleanup to run code after all tests in a class have run
[ClassCleanup()]
public static void MyClassCleanup() { }

// Use TestInitialize to run code before running each test 
[TestInitialize()]
public void MyTestInitialize() { }

// Use TestCleanup to run code after each test has run
[TestCleanup()]
public void MyTestCleanup() { }

12voto

stijn Points 13405

Il s’agit d’un comportement plutôt standard pour les suites de tests : le programme d’installation et le démontage avant et après chaque essai. La philosophie est que les tests ne devraient pas dépendent mutuellement. Si vous voulez un autre comportement, vous devriez probablement utiliser des objets statiques qui persistent entre chaque test.

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