web-dev-qa-db-fra.com

Visual Studio 2012 MSTest vs NUnit pour et contre

Nous devons décider quelle technologie utiliser pour nos tests unitaires. Nous utilisons actuellement Visual Studio 2010 et ne sommes pas satisfaits de MSTest. Il est bogué, son déploiement est médiocre (par exemple, le répertoire de sortie des paramètres de test n’est pas reconnu correctement) et pose plusieurs problèmes lorsqu’on essaie de tester des assemblys dans les versions 32 bits et 64 bits. Pour aggraver les choses, MSTest n’a pas une bonne correspondance d’impédance avec notre système de compilation Jenkins. Nous avons donc pensé passer à NUnit. Cependant, personne dans notre équipe n'a une bonne exposition à NUnit. De plus, nous allons bientôt passer à Visual Studio 2012. 

J'ai besoin de connaître les avantages et les inconvénients de Visual Studio 2012 MSTest vs Nunit dernière version . Comme la plupart des articles sur le dépassement de capacité de la pile sont liés à des versions antérieures de VS, ils ne nous sont pas liés. Je suppose que Microsoft a beaucoup amélioré MSTest depuis 2010. Fournissez une comparaison impartiale avec les problèmes techniques détaillés auxquels vous avez été confrontés dans les deux technologies ( nouvelles versions uniquement

48

J'utilise à la fois MSTest et NUnit pour le moment. IMHO NUnit est toujours une meilleure solution. Si vous possédez Visual Studio 2012 Premium Edition, c'est plutôt agréable, à part le fait que vous ne pouvez pas sembler regrouper les tests. J'aime le fait qu'il soit intégré à Visual Studio, mais le manque de regroupement et la possibilité d'exécuter un sous-ensemble de tests sans les sélectionner manuellement est un énorme problème.

L'analyse de la couverture est également très soignée dans Premium. C'est rapide et vous donne rapidement ce dont vous avez besoin. C'est une fonctionnalité Premium cependant.

Comme il manque toujours des fonctionnalités dans MSTest (même des fonctionnalités supprimées depuis vs2010), je vous recommanderais quand même d’utiliser NUnit pour les tests unitaires. Les avantages comprennent le regroupement des tests par espace de nom, la possibilité d'ajouter des annotations de cas de test (exécuter le même test plusieurs fois avec des paramètres différents) et fonctionne bien avec Opencover et Report Generator pour l'analyse de couverture. Le principal inconvénient cité est que ce n'est pas intégré comme MSTest, donc cela dépend vraiment de ce qui compte pour vous, qu'il s'agisse ou non d'un inconvénient.

27
Matt Esch

@Biranchi: Peu importe le framework de test unitaire que vous utilisez dans Visual Studio 2012 (et les versions ultérieures). Voir mon blog ici, la suite de celle à laquelle vous faites référence. http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/20/part-2-using-traits-with-different-test-frameworks-in-the-unit-test-Explorer. aspx

Vous pouvez même mélanger et assortir des tests de différents frameworks, vous pouvez même le faire jusqu'au niveau de la méthode !!
Cela signifie que vous pouvez même déplacer le code existant de l’un à l’autre sans effets secondaires néfastes.

Voir également ceci pour savoir comment utiliser Nuget pour installer l'adaptateur NUnit dans la solution, libérant ainsi le développeur pour l'installer lui-même. http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/11/part-3-un-testing-with-traiting-and-code-coverage-in-visual-studio -2012-using-the-tfs-build-and-the-new-nuget-adapter-approche.aspx

@Sriwantha: MSTest est un framework plus simple que NUnit. NUnit (et aussi XUnit) vous donne plus de flexibilité, ce qui entraîne également moins de code à écrire. Un exemple: si vous utilisez des catégories (et vous devriez), MSTest nécessite une catégorie pour décorer chaque méthode. NUnit vous permet de décorer la classe - cela prendra effet pour toutes les méthodes de cette classe. NUnit vous permet également d'utiliser des catégories fortement typées 

public class Integration : Category {}

Cela suffit pour déclarer une catégorie que vous pouvez utiliser à la place de 

Category("Integration");

où vous risquez des fautes d'orthographe.

NUnit prend beaucoup mieux en charge les tests basés sur les données . NUnit prend également en charge les théories

pour en nommer quelques uns. 

10
Terje Sandstrøm

VS2012 autorise la catégorisation des tests en groupes si vous avez "Update 1" ou une version ultérieure: http://msdn.Microsoft.com/en-us/library/hh270865.aspx#BKMK_Grouping_and_filtering_the_test_list

1
Martin Noreke

Une dernière chose à ajouter ici. Il semble que le moteur MSTEST ne fonctionne pas bien avec TFS Build dans certains scénarios. Si vous utilisez la construction TFS, les tests ignorés (marqués avec l'attribut Ignore) ne seront pas signalés. Il n'inclura que Assert.Inclclusive. Si cela pose un problème, vous devez utiliser NUnit au lieu de MSTest.

0
Saumil