9
votes

Global.asax pour des tests unitaires?

Dans mon projet Mstest Unittest, avant d'exécuter des tests, j'ai besoin d'exécuter certaines commandes. Existe-t-il une fonctionnalité, comme Global.Asax est pour des projets basés sur le Web, qui me permettra de lancer quelque chose avant que tous les tests courent?

Je devrais préciser que lorsque je dis "exécuter certaines commandes", je ne parle pas des commandes DOS, mais exécutez du code.


0 commentaires

3 Réponses :


1
votes

Propriétés de votre projet, puis sur le champ de débogage Vous pouvez spécifier des arguments

éditer Lorsque vous voyez le menu de débogage dans les propriétés, vous pouvez démarrer un programme externe pour vous faire certaines choses lorsque vous commencez à déboguer. Cela déclenchera lorsque vous lancez une instance de votre projet de test. Vous pouvez également spécifier des arguments de ligne de commande dans la boîte d'arguments de ligne de commande.

Par exemple, j'utilise Nunit I Spécifier Nunit en tant que programme externe et spécifiez l'emplacement du fichier .dll dans les arguments de la ligne de commande


3 commentaires

Je voudrais exécuter du code plutôt que d'exécuter des commandes externes.


Et ce qui vous empêche d'exécuter un fichier .exe que vous avez créé? Vous pouvez compiler votre code qui doit être exécuté dans un exe que vous commencerez par une session de débogage ou que je manque quelque chose parce que je pense que c'est une bonne solution à votre problème.


Je dois exécuter du code avant que tous les tests ne soient lancés. Code étant des méthodes statiques sur certaines classes qui seront appelées plus tard par la plupart des tests. C'est pourquoi j'ai besoin d'exécuter un certain code avant l'exécution des tests.



18
votes

Si je comprends correctement, vous devez faire fonctionner un code d'initialisation avant de démarrer vos tests. Si tel est effectivement le cas, vous devez déclarer une méthode à l'intérieur de votre classe d'unité-test avec le AssemblyInitializeattribute qui fonctionnera avant tout autre test de montage


2 commentaires

AssemblyInitializeattribute est exactement ce dont j'ai besoin. Merci un tas, vous êtes-vous une vérification verte.


Je devais changer la signature pour que cela fonctionne maintenant: Public Static Void ClassSetup (TestContext CTX)



3
votes

Les frameworks de test unitaire prennent généralement en charge la configuration et les méthodes "DÉPARTER" pour l'ensemble du correctif de test et des tests individuels. Mstest vous permet de spécifier quelles méthodes exécutées lors de ces attributs: xxx

ayant dit cela, soyez prudent avec les méthodes d'initialisation et de nettoyage de la classe si vous exécutez des tests d'unité ASP.NET. Comme il le dit dans le classinitializeattribute Documentation:

Cet attribut ne doit pas être utilisé sur Tests de l'unité ASP.NET, c'est-à-dire tout test avec [HostType ("ASP.NET")] Attribut. En raison de la nature apatride des IIS et asp.net, une méthode décorée avec Cet attribut peut être appelé plus de une fois par test de test.


1 commentaires

Bon ajout sur les tests de l'unité ASP.NET! J'ai travaillé autour de cela en définissant la [testinitialize] dans une classe de base.