Comment faire pour exécuter NUnit d'appareils de test en série?
J'ai plusieurs suites de tests d'intégration mis en œuvre en C#/NUNit. Chaque suite de tests est une catégorie distincte, chaque appareil le programme d'installation crée et alimente une base de données SQL Server à partir de scripts. Ce tous l'habitude de travailler à l'amende juste avant Resharper 5.1.
Malheureusement, Resharper 5.1 commence à courir à plusieurs appareils en même temps. C'est une modification importante - ils sont tous de la tentative de créer et de remplir la même base de données, qui, évidemment, se retrouve dans un bordel. Est-il possible que je puisse avoir Resharper exécuter mes appareils de test en série?
Si non, que suggéreriez-vous à faire fonctionner mon NUnit d'appareils de test en série, un seul appareil à la fois?
L'ordre dans lequel les différents tests n'a pas d'importance.
- Voulez-vous dire en série? Séquentiellement implique que l'ordre dans lequel les tests sont exécutés questions. En série signifie simplement qu'ils sont exécutés un à un, mais l'ordre n'a pas d'importance.
- Oui, en série, j'ai corrigé la question, merci!
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si il est possible de prévenir ReSharper de l'exécution des tests en parallèle; si non, la suite de hack peut fonctionner: Créer une classe statique avec un static readonly
Monitor
membre. Puis, dans[TestFixtureSetUp]
, appelEnter()
sur le moniteur, et l'appelExit()
sur le moniteur en[TestFixtureTearDown]
. De cette façon, un seul test match sera autorisé à s'exécuter à un moment. Pas joli, mais...Êtes-vous sûr de cela ? J'ai juste essayé.. en mettant une trace de la façon suivante dans les tests en 3 diff NUnit luminaires, suivi par "Courir ensemble". Ne semble pas être en cours d'exécution en parallèle.
De sortie que je vois est : (R# Construire 5.1.1753.1)
À moins que le code testé ne sa propre gestion des transactions, vous pouvez exécuter chaque test à l'intérieur d'une transaction. De cette façon, les différents tests de ne pas déranger les uns les autres. Aussi, vous n'avez pas à vous soucier de nettoyage après chaque essai, depuis la de chaque test de la transaction peut simplement abandonner après le test est terminé.
Dans nos projets, nous avons l'habitude de laisser nos tests d'intégration dérivent d'une classe qui ressemble plus ou moins comme ceci:
[TestFixtureSetUp]
et[TestFixtureTeardown]
à la place?Leur donner alphabétique des noms, c'est à dire les préfixer avec une lettre qui signifie que leur ordre de marche. Si vous avez besoin de cela arrive, vous devriez être en mesure d'accepter ce méchant convention de nommage trop.