Les projets de test de NUnit vs Visual Studio 2008 pour les tests à L'Unité? [fermé]

je vais démarrer un nouveau projet au travail et je veux entrer dans les essais à l'unité. Nous utiliserons VS 2008, C#, et le ASP.NET des trucs de MVC. Je cherche à utiliser NUnit ou les projets de test intégrés que VS2008 A, mais je suis ouvert à la recherche d'autres suggestions. Un système est-il mieux que l'autre ou peut-être plus facile à utiliser/comprendre que les autres? Je souhaite que ce projet devienne une sorte de "meilleure pratique" pour nos efforts de développement.

Merci pour toute aide et suggestions!!

250
demandé sur PRINCESS FLUFF 2008-09-18 18:11:11

19 réponses

Daok tous les pros des projets de test VS2008, voici les pros de NUnit.

  • NUnit a un cadre moqueur.
  • NUnit peut être exécuté à l'extérieur de la IDE, cela peut être utile si vous voulez pour exécuter des tests sur un serveur de compilation Non MS comme CC.Net
  • NUnit a d'autres versions qui sortent que visual studio. Vous n'avez pas à attendre des années pour une nouvelle version Et vous n'avez pas à installer un nouveau la version de l'IDE bénéficiez de nouvelles fonctionnalités.
  • il y a des extensions en cours de développement pour NUnit comme row-tests etc.
  • les tests visuels en Studio prennent du temps pour commencer pour une certaine raison. C'est meilleur en 2008 mais encore trop lent pour mon goût. Exécution rapide d'un test pour voir si tu n'as pas cassé quelque chose peut prendre trop de temps. NUnit avec quelque chose comme Testdriven.Net pour courir les tests de L'IDE est en fait beaucoup plus rapide. en particulier lors de l'exécution de un seul test.

    Kjetil Klaussen est causé par le studio visuel testrunner, qui exécute des tests MSTest en TestDriven.Net rend MSTest performance comparable à NUnit.
97
répondu Mendelt 2017-05-23 11:46:17

le cadre de test de l'unité n'a pas vraiment d'importance, parce que vous pouvez convertir des classes de test avec des fichiers de projet séparés et une compilation conditionnelle (comme ceci, VS->NUnit):

 #if !NUNIT
  using Microsoft.VisualStudio.TestTools.UnitTesting;
 #else
  using NUnit.Framework;
  using TestClass = NUnit.Framework.TestFixtureAttribute;
  using TestMethod = NUnit.Framework.TestAttribute;
  using TestInitialize = NUnit.Framework.SetUpAttribute;
  using TestCleanup = NUnit.Framework.TearDownAttribute;
  using TestContext = System.String;
  using DeploymentItem = NUnit.Framework.DescriptionAttribute;
 #endif

L'TestDriven.Net le plugin est agréable et pas très cher... Avec seulement VS2008 simple vous devez trouver le test de votre classe de test ou liste de test. Avec TestDriven.Net vous pouvez exécuter votre test directement à partir de la classe que vous testez. Après tout, le test de l'unité devrait être facile pour entretenir et près du promoteur.

63
répondu Tuomas Hietanen 2008-09-18 14:59:22

Avantages/changements de VS2008 Intégré dans le Framework de Test Unitaire

  1. la version 2008 est maintenant disponible en éditions professionnelles (avant nécessaire des versions coûteuses de VS, c'est juste pour le développeur de l'unité test.) qui a laissé beaucoup de développeurs avec le seul choix de cadres d'essai ouverts/externes.
  2. construit en API pris en charge par une seule société.
  3. Utiliser les mêmes outils pour exécuter et créer des tests (vous pouvez exécutez-les en utilisant la ligne de commande aussi MSTest)
  4. conception Simple (accordée sans cadre simulé, mais c'est un excellent point de départ pour de nombreux programmeurs)
  5. support à Long terme accordés (je me souviens encore de ce qui s'est passé à nDoc, je ne veux pas commettre d'un framework de test qui pourrait ne pas être pris en charge dans les 5 ans, mais je le considère encore nUnit un grand cadre.)
  6. si vous utilisez le serveur de la fondation de l'équipe comme support, vous pouvez créer des éléments de travail ou des bugs avec les données de test manquées d'une manière simple.
33
répondu Simara 2008-11-18 16:49:28

J'utilise NUnit depuis 2 ans. Tout va bien, mais je dois dire que le système de L'unité dans VS est assez agréable parce qu'il est à l'intérieur de l'interface graphique et peut plus facilement faire des tests pour la fonction privée sans avoir à faire des bêtises. Aussi, le test de L'Unité de VS vous permettre de faire la couverture et d'autres choses que NUnit seul ne peut pas faire.

32
répondu Patrick Desjardins 2008-09-18 14:13:30

un léger ennui du cadre de test de Visual Studio est qu'il va créer de nombreux fichiers de test qui tendent à encombrer votre répertoire de projet - bien que ce ne soit pas si important.

aussi, si vous ne disposez pas d'un plugin tel que TestDriven.NET, vous ne pouvez pas déboguer votre NUnit (ou MbUnit, xUnit, etc.) tests unitaires dans L'environnement Visual Studio, comme vous le pouvez avec le cadre Microsoft VS testing, qui est intégré.

13
répondu Tarsier 2008-09-19 22:35:35

légèrement hors-sujet, mais si vous allez avec NUnit, je peux vous recommander d'utiliser ReSharper - il ajoute quelques boutons à L'interface D'utilisateur VS qui le rendent beaucoup plus facile à exécuter et déboguer des tests à partir de l'IDE.

cette revue est légèrement périmée, mais explique cela plus en détail:

http://codebetter.com/blogs/paul.laudeman/archive/2006/08/15/Using-ReSharper-as-an-essential-part-of-your-TDD-toolkit.aspx

13
répondu Richard Everett 2008-11-28 11:28:50

XUnit est une autre possibilité pour un projet entièrement nouveau. Il a peut-être une syntaxe plus intuitive, mais n'est pas vraiment compatible avec les autres cadres.

http://www.codeplex.com/xunit

10
répondu Ben Fulton 2008-09-18 19:46:57

mon principal problème avec les tests à L'unité VS sur NUnit est que la création de tests VS a tendance à injecter un tas de code généré pour l'accès des membres privés.

certains pourraient vouloir tester leurs méthodes privées, d'autres pas, c'est un sujet différent.

ma préoccupation est quand je suis en train d'écrire des tests unitaires, ils devraient être extrêmement contrôlés afin que je sais exactement ce que je suis en train de tester et comment je suis en train de le tester. S'il y a du code généré automatiquement, je perds un peu de ça. propriété.

10
répondu Ian Suttle 2009-03-08 06:59:28

j'ai fait un peu de TDD en utilisant les deux et (peut-être que je suis un peu stupide) nUnit semble être beaucoup plus rapide et plus simple à utiliser pour moi. Et quand je dis beaucoup, je veux dire beaucoup.

dans MS Test, il y a trop d'attributs, partout - le code qui font les vrais tests est les minuscules lignes que vous pouvez lire ici et là. Un gros gâchis. Dans nUnit, le code qui fait le test domine juste les attributs, comme il devrait le faire.

Aussi, dans nUnit, vous avez juste à cliquer sur le tests que vous voulez faire (un seul? tous les tests couvrant une classe? une assemblée? la solution?). En un seul clic. Et la fenêtre est grande et claire. Vous obtenez des feux verts et rouges clairs. Vous savez vraiment ce qui se passe à un seul regard.

dans VSTS, la liste de test est bloquée en bas de l'écran, elle est petite et laide. Il faut regarder deux fois pour savoir ce qui s'est passé. Et vous ne pouvez pas exécuter un seul test (Eh bien, je ne l'ai pas encore découvert!).

mais je peux me tromper, bien sûr - Je viens de lire environ 21 billets de blog sur "comment faire simple TDD en utilisant VSTS". J'aurais dû lire plus, tu as raison.

pour nUnit, j'en ai lu un. Et j'étais en train de le faire le même jour. Avec plaisir.

d'ailleurs, j'adore les produits Microsoft. Visual Studio est vraiment le meilleur outil qu'un développeur peut acheter - mais TDD et la gestion des éléments de travail dans le système de L'équipe de Visual Studio craint, vraiment.

bonne chance. Sylvain.

10
répondu Sylvain Rodrigue 2009-07-08 20:46:26

j'ai reçu des messages disant que"la structure du fichier NUnit est plus riche que VSTest"... Bien sûr, si vous préférez la structure du fichier NUnit, vous pouvez utiliser cette solution de l'autre manière, comme ceci (NUnit - > VS):

 #if !MSTEST
  using NUnit.Framework;
 #else
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
  using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
  using SetUp = Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute;
  using TearDown = Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute;
 #endif

ou toute autre conversion... :-) Il utilise ici est juste un alias pour le compilateur.

8
répondu Tuomas Hietanen 2009-07-27 14:26:46

tout d'abord je veux corriger une fausse déclaration: vous pouvez exécuter msTest en dehors de visual studio en utilisant la ligne de commande. Bien que plusieurs outils D'IC, comme TeamCity, offrent un meilleur soutien au NUnit (cela changerait probablement au fur et à mesure que le msTest gagnerait en popularité). Dans mon projet actuel, nous utilisons les deux et la seule grande différence que nous avons trouvé est que mstest fonctionne toujours comme un 32bit tandis que NUnit fonctionne soit comme un test 32bit ou 64bit qui importe seulement si votre code utilise le code natif qui est de 32/64 dépendant.

8
répondu Dror Helper 2011-10-21 13:13:04

j'ai commencé avec MSTest mais j'ai changé pour une raison simple. MSTest ne supporte pas L'héritage des méthodes D'essai des autres assemblages.

je détestais l'idée d'écrire le même test plusieurs fois. En particulier sur un grand projet où les méthodes d'essai peuvent facilement courir dans des centaines de tests.

NUnit fait ce dont j'ai besoin. La seule chose qui manque avec NUnit est un Addin de studio visuel qui peut afficher le statut rouge/vert (comme VSTS) de chaque test.

7
répondu 2009-06-12 05:53:22

si vous envisagez MSTest ou nUnit, alors je vous recommande de regarder mbUnit. Mes raisons sont

  1. TestDriven.Net compatibilité. Rien ne vaut un test de conduite.Net.ReRunWithDebugger lié à une combinaison de clavier.
  2. Le Gallion cadre. Gallio est un coureur d'essai comme nUnits. La seule différence est qu'il ne se soucie pas si vous avez écrit vos tests dans nUnit, msTest, xUnit ou mbUnit. Ils sont tous exécutés.
  3. Compatibilité avec nUnit. Toutes les fonctionnalités de nUnit sont supportées par mbUnit. Je pense que vous n'avez même pas besoin de changer vos attributs (devra vérifier cela), juste vos références et utilisations.
  4. "151930920 de la Collection" l'affirme. mbUnit a plus de cas D'affirmation, y compris la classe CollectionAssert. Fondamentalement, vous n'avez plus besoin d'écrire vos propres tests pour voir si les 2 collections sont les mêmes.
  5. tests Combinatoires. Ce ne serait pas cool si vous pouviez fournir deux ensembles de données et obtenir un test pour toutes les combinaisons de données. C'est dans mbUnit.

j'ai d'abord ramassé mbUnit à cause de son [RowTest ....] et je n'ai trouvé aucune raison de revenir en arrière. J'ai déménagé toutes mes suites de test actives de nUnit, et je n'ai jamais regardé en arrière. Depuis, j'ai converti deux équipes de développement différentes aux bénéfices.

6
répondu AlSki 2009-08-23 22:40:30

autant que je sache, il y a quatre cadres disponibles pour l'essai à l'unité avec .NET ces jours-ci

  • NUnit
  • MbUnit
  • MSTest
  • xUnit

NUnit a toujours été à l'avant, mais l'écart s'est fermé dans la dernière année ou ainsi. Je préfère toujours NUnit moi-même, d'autant plus qu'ils ont ajouté une interface fluide il y a un certain temps qui rend les tests très lisibles.

si vous venez de commencer avec le test de l'unité il ne fait probablement pas beaucoup de différence. Une fois que vous serez au courant, vous serez en meilleure position pour juger quel cadre est le mieux adapté à vos besoins.

5
répondu gilles27 2008-09-19 20:52:18

Je n'aime pas VS cadre de test intégré parce qu'il vous force à créer un projet distinct plutôt que d'avoir vos tests dans le cadre du projet que vous testez.

5
répondu Gene Mitelman 2010-04-21 14:17:54

MSTest est essentiellement NUnit légèrement retravaillé, avec quelques nouvelles fonctionnalités (telles que la configuration de l'assemblage et le démontage, pas seulement le niveau d'installation et de test), et manquant certains des meilleurs bits (comme la nouvelle syntaxe de contrainte 2.4). NUnit est plus mature, et il ya plus de soutien pour elle d'autres vendeurs; et bien sûr depuis qu'il a toujours été gratuit (alors que MSTest a seulement fait dans la version professionnelle de 2008, avant qu'il était beaucoup plus cher SKUs), la plupart ALT.NET les projets l'utilisent.

cela dit, il y a des entreprises qui sont incroyablement réticentes à utiliser quelque chose qui n'a pas L'étiquette de Microsoft dessus, et surtout du code OSS. Ainsi, avoir un cadre de test MS officiel peut être la motivation dont ces entreprises ont besoin pour obtenir des tests; et soyons honnêtes, c'est le test qui importe, pas l'outil que vous utilisez (et en utilisant le code Tuomas Hietanen ci-dessus, vous pouvez presque rendre votre cadre de test interchangeable).

4
répondu David Keaveny 2017-05-23 11:46:17

avec la sortie en .NET 4.0 du système de contrats de Code et la disponibilité d'un vérificateur statique , vous devriez théoriquement écrire moins de cas d'essai et un outil comme Pex aidera à identifier ces cas. Si vous devez faire moins de tests unitaires parce que vos contrats couvrent votre queue, alors pourquoi ne pas simplement aller de l'avant et utiliser les pièces intégrées puisque que est une dépendance de moins à gérer. Ces jours-ci, je suis tout sur la simplicité. :- )

voir aussi:

3
répondu Norman H 2010-11-09 02:35:54

je préférerais utiliser le petit cadre d'essai de MS, mais pour l'instant je m'en tiens à NUnit. Les problèmes avec MS sont généralement (pour moi)

  • tests partagés "fichier (inutile) qui doit être maintenu
  • les listes de Tests causent des conflits avec plusieurs développeurs / VCSs
  • pauvre interface-utilisateur intégrée-configuration confuse, sélection de tests fastidieuse
  • pas bon coureur externe

mises en garde - Si je testais un site aspx, je certainement utiliser MS's - Si je développais en solo, la sclérose en plaques serait très bien. - Si J'avais une compétence limitée et que je ne pouvais pas configurer NUnit :)

je trouve qu'il est beaucoup plus facile d'écrire mes tests et d'enflammer NUnitGUI ou L'un des autres bouts avant (testDriven est de loin beaucoup trop cher). Configurer le débogage avec la version en ligne de commande est également assez facile.

2
répondu Andrew Backer 2009-05-22 20:54:24