2010-05-19 2 views
0

MSTest possède un attribut [ClassCleanup()], qui doit être statique pour autant que je sache. J'aime courir après mes tests unitaires et nettoyer ma base de données. Tout cela fonctionne très bien, cependant quand je vais sur notre serveur de construction et que j'utilise notre script de construction Nant, il semble que les tests unitaires sont exécutés avec NUnit. NUnit ne semble pas aimer que la méthode de nettoyage soit statique. Il ignore donc mes tests dans cette classe. Que puis-je faire pour y remédier? Je préfère ne pas utiliser [TestCleanUp()] car il est exécuté après chaque test. Est-ce que quelqu'un a des suggestions? Je sais que [TestCleanup()] facilite le découplage, mais je préfère vraiment le [ClassCleanup()] dans cette situation. Voici un exemple de code. Merci pour tous les pointeurs et oui, je me rends compte que je ne suis pas attraper quelque chose que ce soit. Je dois d'abord passer cet obstacle.ClassCleanup dans MSTest est statique, mais le serveur de génération utilise nunit pour exécuter les tests unitaires. Comment puis-je ajuster?

Cheers, ~ ck à San Diego

Répondre

3

Votre serveur de build ne tient pas compte de vos tests, car MSTest utilise un ensemble différent d'attributs pour spécifier des essais à ce qui utilise NUnit. C'est plus vraisemblablement le problème que vous rencontrez, s'il ne voit pas de vos tests.

Par exemple: MSTest utilise [TestClass] et [TestMethod] pour spécifier un appareils d'essais et de tests, alors que NUnit utilise [TestFixture] et [Test].

Également, l'équivalent de NUnit à [ClassCleanup] est [TestFixtureTearDown], et il n'est pas statique. Gardez à l'esprit que si vos tests doivent absolument s'exécuter sur MSTest et NUnit, vous pouvez décorer les tests avec des attributs pour les deux frameworks et cela fonctionnera (dans une certaine mesure, de toute façon). Toutefois, pour obtenir le comportement ClassCleanup avec les deux, vous devez disposer de quelque chose comme ceci:

[ClassCleanup] 
public static void MSTestClassCleanup() 
{ 
    CommonCleanup(); 
} 

[TestFixtureTearDown] 
public void NUnitTearDown() 
{ 
    CommonCleanup(); 
} 

public static void CommonCleanup() 
{ 
    // Actually clean up here 
} 
Questions connexes