Question

Existe-t-il une génération de tests unitaires? Si oui ...

... ça marche bien?

... Quelles sont les solutions de génération automatique disponibles pour .NET?

... existe-t-il des exemples d'utilisation d'une technologie comme celle-ci?

... est-ce seulement valable pour certains types d'applications, ou pourrait-il être utilisé pour remplacer tous les tests unitaires écrits manuellement?

Était-ce utile?

La solution

Consultez Pex . C'est un projet Microsoft Research. Depuis le site web:

Pex génère des tests unitaires à partir de tests unitaires paramétrés écrits à la main, au moyen de tests exploratoires automatisés basés sur l'exécution symbolique dynamique.

Autres conseils

Je pense que la génération de tests unitaires ne sert à rien, pour autant que TDD disparaisse.

Vous ne faites que des tests unitaires pour vous assurer que vous (en tant que développeur) êtes sur la bonne voie en ce qui concerne la conception et les spécifications. Une fois que vous commencez à générer des tests automatiquement, il perd cet objectif. Bien sûr, cela signifierait probablement une couverture de code à 100%, mais cette couverture serait insensée et vide.

Les tests unitaires automatisés signifient également que votre stratégie est test-après, ce qui est opposé au principe test-before de TDD. Encore une fois, TDD ne concerne pas les tests.

Cela étant dit, je pense que MSTest dispose d'un outil automatique de génération de tests unitaires - j'ai pu en utiliser un avec VS2005.

Mise à jour pour 2017:

Le générateur de réchaud-testeur d'unité fonctionne pour VS 2015-2017 et est en cours de maintenance. . Semble fonctionner comme annoncé.

J'ai créé 'ErrorUnit' et il génère des tests d'unités MSTest ou NUnit à partir de Visual Studio suspendu ou de vos journaux d'erreurs. Variables de classe mocking, paramètres de méthode et accès aux données EF jusqu'à présent. ( http://ErrorUnit.com )

Aucun générateur de test unitaire ne peut tout faire; Les tests unitaires sont classiquement séparés en trois parties: Arrange, Act et Assert; la partie Arrangement est la plus grande partie d'un test unitaire et elle définit toutes les conditions préalables à un test, en se moquant de toutes les données sur lesquelles le test va agir. La partie Activée d'un test unitaire est généralement d'une ligne et est activée. la partie du code en cours de test transmettant ces données, et enfin la partie assert du test prend les résultats de la partie Act et vérifie si elle répond aux attentes (peut être zéro ligne tout en s'assurant qu'il n'y a pas d'erreur).

Les générateurs de tests unitaires ne peuvent généralement effectuer que les parties "Arranger" et "Agir" lors de la création du test unitaire; Cependant, les générateurs de tests unitaires n'écrivent généralement pas de parties "Assert", car vous seul savez ce qui est correct et ce qui est incorrect pour vos besoins. Par conséquent, une certaine saisie / extension manuelle des tests unitaires est nécessaire pour assurer son exhaustivité.

Je suis d'accord avec Jon. Certains types de tests, tels que les tests de fuzz automatisés, bénéficient définitivement de la génération automatisée. Bien que vous puissiez utiliser les fonctionnalités d'un framework de tests unitaires pour accomplir cela, cela n'atteint pas les objectifs associés à une bonne couverture de tests unitaires.

Parasoft .TEST dispose d'une fonctionnalité de génération de tests. Il utilise le framework NUnit pour la description des tests et l’évaluation des assertions.

Il est possible de préparer une suite de tests de régression en générant automatiquement des scénarios (construction d'entrées et méthode d'appel testée) et en créant des assertions basées sur le comportement actuel de la base de code. Plus tard, lorsque la base de code testée évolue, les assertions indiquent des régressions ou peuvent être facilement enregistrées à nouveau.

J'ai utilisé NStub pour arrêter le test de mes cours. Cela fonctionne assez bien.

J'ai utilisé des outils pour générer des scénarios de test. Je pense que cela fonctionne bien pour les tests de niveau supérieur, axés sur l'utilisateur final. Des éléments qui font partie des tests d'acceptation utilisateur, bien plus que des tests unitaires purs.

J'utilise les outils de test unitaire pour ce test d'acceptation. Cela fonctionne bien.

Voir Création d'outils de test .

Il existe un produit commercial appelé AgitarOne (www.agitar.com) qui génère automatiquement des classes de test JUnit.
Je ne l'ai pas utilisé, je ne peux donc pas dire à quel point c'est utile, mais si je faisais un projet Java pour le moment, je le regarderais.

Je ne connais pas d'équivalent .net (Agitar a annoncé une version .net mais, autant que je sache, il ne s'est jamais matérialisé).

Je sais que ce fil est ancien, mais pour le compte de tous les développeurs, il existe une bonne bibliothèque appelée générateur de tests unitaires:

https://visualstudiogallery.msdn.microsoft.com/45208924- e7b0-45df-8cff-165b505a38d7

Bon dev

GennyMcGenFace crée un test unitaire pour chaque fonction. votre classe et génère des objets avec des mots / valeurs aléatoires dans chaque paramètre.

  • Générer des tests unitaires pour chaque fonction de votre classe
  • Comprend les valeurs valides générées aléatoirement pour les entrées de paramètre et l'instruction de retour.
  • Les interfaces mockables renvoient des valeurs valides générées aléatoirement
  • Générer des tests unitaires pour chaque fonction de votre classe
  • Importe tous les espaces de noms nécessaires dans votre classe de test

Cela vous aide à configurer vos tests unitaires, en particulier si vous avez des objets d'entrée avec beaucoup de paramètres.

Le test unitaire ressemblera à quelque chose comme ça

Selenium génère des tests unitaires à partir de commandes de l'utilisateur sur une page Web, très pratique .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top