Différence entre JUnit des Théories et des Tests Paramétrés
Quelle est la différence entre une Théorie et une Paramétré test?
Je ne suis pas intéressé par la mise en œuvre des différences lors de la création des classes de test, juste que lorsque vous choisissez l'un sur l'autre.
- J'ai utilisé paramétrées avant, mais cela peut être un peu salissant. La théorie semble faire la même chose mais d'une manière plus propre. C'est peut-être une deuxième tentative pour obtenir le concept de paramétrées, les tests de droite. Bonne question, merci de l'élever !
Vous devez vous connecter pour publier un commentaire.
De ce que je comprends:
Avec Paramétrée tests que vous pouvez fournir une série d'entrées statiques, pour un cas de test.
Théories sont similaires, mais différentes dans le concept. L'idée est de créer des cas de test qui test sur des hypothèses plutôt que des valeurs statiques.
Donc, si mon fourni des données de test, selon certaines hypothèses, le résultat affirmation est toujours déterministe.
L'une des grandes idées derrière cela est que vous seriez en mesure de fournir un nombre infini de données de test et de vos cas de test serait encore vrai; aussi, souvent, vous avez besoin de tester un univers de possibilités à l'intérieur d'un test de saisie de données, comme les nombres négatifs. Si vous tester de manière statique, qui est, de fournir un peu de nombres négatifs, il n'est pas garanti que votre composant vont à l'encontre de tous les nombres négatifs, même si il est fort probable de le faire.
De ce que je peux dire, xUnit cadres de tenter d'appliquer des théories, des concepts par la création de toutes les combinaisons possibles de votre fourni des données de test.
Les deux doivent être utilisées lors de l'approche d'un scénario dans un data-driven scénario (j'.e que les entrées de changement, mais le test est toujours en train de faire les mêmes constats sur et plus).
Mais, depuis les théories semblent expérimentale, je voudrais utiliser seulement si j'ai besoin de tester une série de combinaisons de mes données d'entrée. Pour tous les autres cas je ne l'utiliserais Paramétrée tests.
Parameterized.class les tests de "paramétrer" des tests avec une seule variable, tandis que Theories.class "paramétrer" avec toutes les combinaisons de plusieurs variables.
Pour des exemples, veuillez lire:
http://blogs.oracle.com/jacobc/entry/parameterized_unit_tests_with_junit
http://blog.schauderhaft.de/2010/02/07/junit-theories/
http://blogs.oracle.com/jacobc/entry/junit_theories
Theories.class est similaire à Haskell QuickCheck:
http://en.wikibooks.org/wiki/Haskell/Testing
mais QuickCheck autogenerates combinaisons de paramètres
À partir de ma compréhension de la différence est qu'un Paramétrée Test est utilisé lorsque tout ce que vous voulez faire est de tester un ensemble de différents intrants (test de chacun d'eux individuellement), une Théorie est un cas particulier d'une Paramétré Test qui vous sont test chaque entrée dans son ensemble (chaque paramètre doit être vrai).
Un peu de retard dans la réponse. Mais il serait utile à l'avenir des testeurs.
Paramétrée Tests vs Théories
En plus des réponses ci-dessus:
Sur une entrée avec 4 valeurs et les 2 méthodes d'essai
Annotation@RunWith(Theories.class) - va générer 2 JUnit tests
Annotation@RunWith(Parameterized.class) qui va générer 8 (4 entrées x 2 méthodes) JUnit tests