NUnit et [SetUp] dans les classes de base
Je suis à la recherche à un certain code de test à l'aide de NUnit, qui hérite d'une classe de base contenant un [SetUp] attribut:
public class BaseClass
{
[SetUp]
public void SetUp()
{
//do something
}
}
[TestFixture]
public class DerivedClass : BaseClass
{
[SetUp]
public void SetUp()
{
//do something else, with no call to base.SetUp()
}
//tests run down here.
//[Test]
//[Test]
//etc
}
La classe dérivée aura certainement besoin de travail effectué dans la classe de base' méthode SetUp ().
Suis-je raté quelque chose, ou la méthode SetUp() dans la classe de base de ne pas être appelé lorsque la dérivée de la classe d'exécuter ces tests? Est-il quelque chose de spécial avec le bouton [SetUp] de l'attribut qui assure une sera appelée avant les autres?
- Les constructeurs sont vos amis. Si vous souhaitez un additif comportement du programme d'installation - utiliser les constructeurs, comme leur syntaxe est plus intuitive pour cela. Aussi, vous devriez également considérer la raison jamesnewkirk.typepad.com/posts/2007/09/why-you-should-.html
- Juste une autre astuce pour quelqu'un aux prises avec cette question: assurez-vous que votre
SetUp
méthodes sont publiques. R# ne pas vous avertir si elles sont privées, mais ils ne fonctionnent pas. - Up-to-date de réponse pour NUnit 2.5+ ici: stackoverflow.com/a/22099351/532647
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez avoir qu'un
SetUp
méthode.Si vous avez besoin d'ajouter la configuration de la logique dans une classe enfant, marque
SetUp
virtuels dans votre classe parent, le remplacer, et d'appelerbase.SetUp()
si vous voulez que la classe de base du programme d'installation à exécuter, trop.Avant de NUnit 2.5 les réponses précédentes étaient correctes; vous n'avez qu'une seule
[SetUp]
attribut pour un test.Avec NUnit 2.5, vous pouvez avoir plusieurs méthodes décorées avec le
[SetUp]
attribut. Par conséquent, le ci-dessous est parfaitement valide dans NUnit 2.5+:Lorsque vous héritez NUnit courez toujours le '[SetUp] de la méthode dans la classe de base en premier. Si plusieurs
[SetUp]
méthodes sont déclarées dans une classe unique NUnit ne peut pas garantir que l'ordre d'exécution.Voir ici pour plus d'informations.