Y a-t-il un moyen pratique d'exécuter des tests sur plusieurs ensembles de données - comme dans les tests paramétrés de Junit? p>
3 Réponses :
Les tests partagés peuvent être intéressants pour vous. Ils vous permettent de définir un ensemble de tests comme dans cet exemple de pile: , puis dans la spécification réelle, vous pouvez l'utiliser comme ceci: p> Ainsi, en d'autres termes, NONENTTYSTACK STRT> est un ensemble paramétré de tests que vous pouvez utiliser avec différents ensembles de données que vous souhaitez tester. p> p>
Il existe une nouvelle fonctionnalité pour tester plusieurs ensembles de données provenant de Scalatest 1.5, que vous pouvez actuellement essayer en instantané. Il est publié à Scala-Tools.org:
group ID: org.scalatest Artefact ID: Scalatest Version: 1.5-Snapshot p>
Vous mélangez (ou importez les membres de) TabledRivenProperTyChecks, vous pouvez définir des tables telles que ceci: p> vous passez un Var Arg Liste des tuples à la table. Chaque tuple doit avoir la même arité, dans ce cas, chaque tuple a ARITY 4 (4 membres). Le premier tuple est toutes des cordes et ces noms définissent les colonnes. Les tuples suivants définissent chacun une ligne de données. Vous pouvez mettre n'importe quel type dans le tuple, mais en général, chaque colonne contiendrait le même type. Bien que si vous vouliez que vous puissiez avoir des colonnes de type qui peuvent contenir quoi que ce soit. Vous pouvez avoir une table avec 1 à 22 colonnes. Si vous avez besoin de plus de 22 colonnes (la taille maximale du tuple dans Scala est actuellement 22), ce que vous pouviez faire est d'utiliser un type composé dans une ou plusieurs colonnes. P> Une fois que vous avez une table, vous pouvez vérifier Ils avec Forall comme ceci: p> Forall prend deux listes de paramètres. Le premier est une table et la seconde est une "fonction de propriété", qui exprime quelque chose qui devrait être vrai pour chaque rangée de la table. For'all prendra chaque rangée de la table (sauter la ligne de rubrique de noms de colonne, bien sûr) et assurez-vous que la propriété est tirée. Si ce n'est pas le cas, vous obtenez un bon message d'erreur indiquant quelle ligne de la table a échoué, quelles sont les valeurs des colonnes nommées, etc. p> une table est un SEQ des tuples de données, de sorte que vous peut aussi l'utiliser comme un SEQ. Par exemple, vous pouvez obtenir un SEQ d'option [exception] indiquant quelles lignes ont échoué comme ceci: p> La SEQ résultante contient une option pour chaque ligne de données dans la table, Ce qui n'est rien si la propriété est passée pour cette ligne et une [exception] si la propriété a échoué. L'exception dans certains contient tous les détails sur l'échec. P> p>
Une autre possibilité pour des tests axés sur les données consiste à utiliser la syntaxe suivante: tests par défaut exécuté en parallèle, sauf si vous avez défini parallelElallexecution dans Test: = Faux code>. p> p>
Je jetterais un coup d'œil à Scalacheck, qui peut être utilisé à partir de Scalatest.