Les Classes marquées avec TestInitialize et TestCleanup ne s'exécutent pas

J'ai eu du mal avec celui-ci, j'espère que cela aidera quelqu'un d'autre.

En créant des tests unitaires à L'aide de MsTest, j'ai découvert que je répétais le même code dans chaque test, et j'ai trouvé quelques attributs pratiques(TestInitialize, TestCleanup, ClassInitialize, et ClassCleanup).

Soi-disant, Lorsque vous marquez une méthode avec l'un de ces attributs, elle devrait s'exécuter automatiquement (avant chaque test, après chaque test, avant tous les tests et après tous les tests respectivement). Malheureusement, cela n'a pas arriver, et mes tests ont échoué. Si vous appelez directement ces méthodes à partir des classes marquées avec l'attribut TestMethod, les tests ont réussi. Il était évident qu'ils ne s'exécutaient pas seuls.

Voici un exemple de code que j'utilisais:

[TestInitialize()]
private void Setup()
{
    _factory = new Factory();
    _factory.Start();
}

Alors pourquoi cela ne s'exécute-t-il pas?

38
demandé sur abatishchev 2012-09-21 00:52:27

3 réponses

L'astuce consiste à faire ces méthodes public:

[TestInitialize()]
public void Setup()
{
    _factory = new Factory();
    _factory.Start();
}

Quand ils sont private ils ne s'exécutent pas.

91
répondu Stefan de Kok 2012-10-12 01:51:38

TestInitialize et TestCleanup sont exécutés avant et après tous les tests, pas avant et après chacun.

C'est faux, voir par exemple ce lien: http://social.msdn.microsoft.com/Forums/en-US/vststest/thread/85fb6549-cbaa-4dbf-bc3c-ddf1e4651bcf

Voir aussi MSDN

Http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.classinitializeattribute.aspx

L'exemple de code montre comment utiliser TestInitialize, ClassInitialize et AssemblyInitialize.

9
répondu Stefan de Kok 2014-04-25 22:28:53

J'ai aussi eu le problème et-en raison de mon malentendu sur la façon dont les méthodes sont appelées-Je l'ai résolu avec ceci: faites en sorte que vos tests héritent de la classe contenant les méthodes TestInitialize et TestCleanup.

1
répondu Nadine 2016-12-25 21:55:16