Test unitaire, NUnit ou Visual studio?

J’utilise Visual Studio (parfois réapparaître) pour exécuter mon test unitaire.

J’ai entendu parler de NUnit, mais je ne connais pas grand chose à ce sujet …

Devrais-je m’en soucier? Peut-il offrir quelque chose de mieux que le studio visuel?

Dois-je utiliser NUnit et pourquoi?

    NUnit a peu d’avantages par rapport à MS-Test

    1. Atsortingbut Suite – peut agréger les tests et les exécuter séparément (utile par exemple pour les grands projets avec des tests rapides et lents)
    2. Méthode Assert.AreEqual(expected, actual) lisible, par exemple Assert.AreEqual(expected, actual) vs Assert.That(actual, Is.EqualTo(expected))
    3. NUnit a de fréquentes mises à jour de version – MS-Test en a seulement une par version VS.
    4. De nombreux coureurs intégrés, y compris Resharper et TestDriven.NET
    5. Assertion de message d’exception attendue – peut être effectuée en utilisant l’atsortingbut dans NUnit mais doit être effectuée en utilisant Try-Catch dans MS-Test
    6. [TestCase] ! NUnit permet des tests paramétrables.

    De mon sharepoint vue actuel (après 8 mois de développement avec environ 10 développeurs en moyenne), je déconseille d’utiliser MSTest pour les raisons suivantes

    • Le cadre en soi est assez lent. Je ne parle pas du code de test que vous écrivez – c’est sous votre contrôle. Je veux dire que le framework qui exécute ces tests est lent, qu’il s’agisse d’une suite de tests, de tests simples, etc.
    • La nécessité de conserver un fichier de métadonnées de test qui entraîne toujours des complications lorsque plusieurs développeurs y travaillent (recréant par exemple les métadonnées, etc.). Chaque autre suite de tests n’a pas besoin d’un fichier de métadonnées. C’est plutôt sympa d’organiser vos tests mais vous pouvez obtenir la même chose avec les espaces de noms, les classes et les noms de méthodes.
    • Faire de l’continuous integration, si vous souhaitez exécuter des tests unitaires sur votre machine de génération, vous devrez installer Visual Studio sur cette machine.

    En d’autres termes, si je devais encore décider il y a 8 mois, je prendrais probablement NUnit. Je ne dispose peut-être pas du rapport de résultats de tests intégrés, mais les développeurs auraient une expérience de test plus transparente.

    Voici mon expérience avec MS Test

    • Nous exécutons MS Test avec un test d’environ 3800.
    • Il faut beaucoup de temps pour que les tests commencent à s’exécuter, ce qui est douloureux lors de l’exécution de tests simples.
    • Il faut environ 1 Go de mémoire pour exécuter les tests. Non, ce n’est pas dû à des memory leaks dans nos tests. Nous rencontrons fréquemment des exceptions OutOfMemoryExceptions.
    • Comme il utilise beaucoup de ressources, nous commençons à exécuter les tests à partir de fichiers par lots. Alors, à quoi sert toute l’intégration?
    • C’est buggé et instable:
      • Par exemple, si vous supprimez l’atsortingbut [Ignore] d’un test, il ne le reconnaît pas, car il met en cache des informations sur les tests quelque part. Vous devez actualiser la liste de test, ce qui permet parfois de résoudre le problème ou de redémarrer VS.
      • Il ne copie pas aléatoirement les assemblys de référence dans le répertoire out.
      • Les éléments de déploiement (fichiers supplémentaires à utiliser) ne fonctionnent pas correctement. Ils sont ignorés au hasard.
    • Il y a des informations cachées (non visibles dans le code de test) dans les fichiers vsmdi et testrunconfig. Si vous ne vous en souciez pas, cela pourrait ne pas fonctionner.
    • Fonctionnellement, il pourrait être comparable à NUnit, mais il est très coûteux si vous envisagez d’utiliser l’édition VS Tester.

    Addition: Nous avons encore quelques tests, même pas le nombre. Il est impossible de tous les exécuter depuis Visual Studio, à cause des exceptions OutOfMemoryExceptions et d’autres problèmes d’instabilité. Nous exécutons les tests à partir de scripts. Il serait facile de visualiser les résultats de test dans Visual Studio, mais lorsque la solution est ouverte, VS se bloque (à chaque fois). Nous devons donc rechercher les tests défaillants en utilisant la recherche de texte. Il n’y a plus d’avantage d’un outil intégré.


    Une autre mise à jour : nous utilisons VS 2013 maintenant. Beaucoup de choses ont changé. Ils ont réécrit le testeur MS Test pour la troisième fois depuis le début. Cela a provoqué beaucoup de changements brusques, mais aucune nouvelle version ne faisait mieux. Nous sums heureux de ne pas avoir utilisé les fonctionnalités sophistiquées de MS Test, car elles ne sont plus sockets en charge. C’est vraiment dommage. Nous utilisons toujours des scripts pour créer et exécuter tous les tests unitaires, car ils sont plus faciles à utiliser. Visual Studio a nécessité quelques minutes pour lancer des tests (mesures du temps après la compilation jusqu’au démarrage du premier test). Ils corrigent probablement cela avec une mise à jour et cela pourrait être un problème spécifique de notre projet. Cependant, Resharper est beaucoup plus rapide lors de l’exécution des mêmes tests.

    Conclusion : Au moins en combinaison avec Resharper, MS Test est utile. Et j’espère qu’ils découvriront enfin comment le testeur devrait être écrit et ne procéderont pas à ce genre de modifications lors de la prochaine mise à jour de Visual Studio.

    NUnit peut être utilisé en combinaison avec Visual Studio. C’est un cadre, pas un programme séparé. Donc, vous pourriez vous soucier de voir si cela vous convient :).

    alt text http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=nunitit&DownloadId=61802

    “Après l’installation du plugin, vous trouverez un nouveau sous-menu dans le menu des outils.”

    Voir http://nunitit.codeplex.com/ pour plus d’informations sur l’importation.

    En outre, beaucoup peut être trouvé en utilisant la recherche de SO. Cette rubrique répertorie les avantages des tests standard NUnit par rapport à MS, par exemple.

    Le plus grand avantage de MS-Test sur NUnit est que MS-Test peut générer des objects de simulation à l’aide de Reflection. Je l’ai trouvé très utile

    NUnit fonctionne avec l’édition Standard de VS.

    NUnit est un framework de test unitaire, également pris en charge par le re-test. Je pense que vous utilisez le framework de test unitaire de Microsoft, alors NUnit est juste une alternative au produit de Microsoft;)

    Voici le lien vers la page d’accueil de NUnit: http://nunit.org/index.php

    Je ne suis pas sûr des autres, mais NUnit fournit une interface graphique et une console sympas pour exécuter vos tests unitaires et vous pouvez également générer un rapport sur le résultat de l’exécution du test NUnit. prendre pour votre test unitaire

    Dans NUnit , les tests ne sont pas exécutés en parallèle. Au contraire, il semble que tous les tests s’exécutent sur un seul thread. Dans MSTest, chaque test est instancié sur un thread séparé, ce qui entraîne l’imbrication des exécutions. Par conséquent, si le test A dépend du test B pour son succès, il échouera probablement car le test B commencera probablement à s’exécuter car le test A est en cours d’exécution.

    Si vous utilisez Visual Studio, vous devez utiliser NUnit pour effectuer un test unitaire et si vous utilisez java (Netbeans), vous devez utiliser JUnit pour le test unitaire.

    Voici un exemple pour un test de calculateur simple

     using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SimpleCalculator; using NUnit.Framework; namespace CalculatorTest { [TestFixture] public class Class1 { public Calculator _calculator; [TestFixtureSetUp] public void Initialize() { _calculator = new Calculator(); } [Test] public void DivideTest() { int a = 10; int b = 2; int expectedValue = a / b; int actualvalue = _calculator.Divide(a, b); Assert.AreEqual(expectedValue, actualvalue,"Failure"); } } }