11
votes

Existe-t-il un consensus sur les cadres de test pour Ruby 1.9.x?

Un deux parter avec une introduction rapide. Intro: Je viens à Ruby de Perl, et je suis un peu perdu parmi les choix du cadre de test. Je comprends qu'il n'y a probablement pas de choix simple, tout autour meilleur , mais je ne peux même pas avoir une image claire du terrain de jeu.

Alors, premier, minitest ou test :: unité? Je viens de me rendre compte que 1.9.1 par défaut à Miniest maintenant. Je n'avais pas remarqué depuis tout le test plus ancien :: Les tutoriels unitaires fonctionnent toujours bien. Si vous nécessite un test / unité , vous obtenez réellement minitest en tant que test :: Émulateur de l'unité (!). Ma pensée initiale était d'aller avec le choix par défaut de Miniest (une fois que je savais que c'était là), mais même des livres très récents ne semblent pas intéressés à l'enseignement. Ruby Meilleures pratiques dit "Il existe des différences significatives" entre les deux, mais il choisit de ne pas traiter avec eux. Il dirige également tous ses tests via Test :: Unité (plus des add-ons personnalisés). La nouvelle pickaxe a également très peu de choses sur les par soi et dans le chapitre sur les tests, ils utilisent également la version de test :: Unité émulation de Miniest. Pour clarifier ma première question, la miniité est-elle une première option médiocre? Devrais-je faire par défaut à l'aide de l'émulateur Test :: Unité?

Deuxièmement, au-delà des options intégrées, il existe RSPEC, concombre et entreprise pour des tests basés sur le comportement. La communauté inclinable est-elle fortement vers ce style et ce cadre? Devrais-je juste commencer par RSPEC?

Je vais jouer un peu avec les trois, mais je suis curieux d'entendre quel type de consensus (le cas échéant) se forment autour de tests dans Ruby 1.9.

(un suivi rapide, comme un rappel à moi-même et pour toute personne intéressée. Voir Ce lien Pour un aperçu utile des différentes invocations de test :: Unité et minitest dans les différents rubis 1.8 à 1.9.1.)


0 commentaires

5 Réponses :


7
votes

J'utilise RSPEC depuis environ un an. J'ai changé de test :: Unité spécifiquement parce que je pouvais imprimer de manière lisible par l'homme ce qui est testé.

Il se lit comme la prose. Qui est grand plus pour moi. Mais comme pour tout ce que tout résultera variera. xxx

également regudeless Cadre de test Vous devez également penser à un outil de couverture comme RCOV . Il s'intègre à RSPEC et vous dira où il manque votre code.


2 commentaires

Merci pour l'échantillon (donner une image de RSPEC en action) et la recommandation RCOV.


Dans Ruby 1.9, la MiniTest / Spec intégré utilise un synaxe identique à cela et présente l'avantage (lorsque vous avez beaucoup de tests) de fonctionner considérablement plus rapidement



6
votes

Y a-t-il un consensus? Je dirais pas. Il y a une voix communautaire forte pour utiliser TDD / BDD, mais même ce n'est pas universel. Le cadre est probablement moins important que l'application de la pratique en premier lieu.

Je crois que Miniest est le remplacement 1.9 pour le test :: Unité, qui n'existe que comme une enveloppe autour de la nouvelle bibliothèque pour la compatibilité en retard. Je suppose que la prise de la route spécifique la plus minitate serait plus avancée.

RSPEC est une prise quelque peu différente: moins évidemment infusée par les «traditionnels» influencés Xunit. Cela vaut la peine de passer du temps avec pour voir si vous le préférez.

Il y a aussi devrait . Bien que je ne sache pas à quel point il est testé, c'est sur 1.9: c'est plus d'une enveloppe / extension pour le test :: unité, donc cela fonctionnera probablement, cependant.

Bien sûr, le plaisir ne s'arrête pas là: une fois que vous avez choisi un cadre de test, vous allez vouloir un moteur moqueur de quelque sorte. Ou un remplacement de la fixation de données.

Dans tous les cas, je dirais n'importe quel cadre pour lequel vous pouvez trouver des preuves de mises à jour régulières, une communauté ouverte et peuplée et une API que vous ne détestez pas fera le travail. Il est peu probable que vous soyez abattu plus tard pour avoir fait le choix que vous le faites.


1 commentaires

Devrait-il ne pas être une bonne idée à ce stade. Les correspondants RSPEC ou Miniest sont plus «prouves futures». Nous venons de déplacer notre application de la devoir à Miniest et cela en valait la peine.



3
votes

I Personnellement Perfer RSPEC. J'ai trouvé que cela axé sur mes tests sur le comportement m'a vraiment aidé à contourner ce que j'essayais de faire.

avec RSPec Go et obtenez quelque chose comme une fille ou un machiniste d'usine pour générer vos données de test, n'utilisez pas de luminaires.

En ce qui concerne ce que Mike a dit, le projet RSPEC est assez actif avec les nouvelles versions libérées normalement avec chaque version des rails pour l'aider à suivre le développement du cadre.


2 commentaires

Merci pour les recommandations. Je dois être l'un des rares, mais je suis intéressé par Ruby pour Ruby. Je n'ai aucun intérêt pour les rails simplement parce que je n'ai aucun intérêt à zéro dans les applications Web. Cela dit, une tonne d'activité pour un cadre de test peut ne pas être une bonne chose. Ou du moins, je ne veux pas constamment relâcher la façon dont la chose fonctionne. Pourtant, je vais vérifier RSPEC.


Vérifiez-le. Vous pouvez utiliser RSPEC pour tester / spécifier tout ce que vous écrivez à Ruby, et c'est un excellent moyen d'aller même si vous ne touchez jamais les rails.



4
votes

RSPEC est le consensus des livres populaires rails comme "la voie des rails". Les pros imphis sont des tests qui ont lu comme anglais, formats de sortie qui ont lu comme l'anglais et les matchers à la volée. Les inconvénients sont la vitesse lente et la bibliothèque se sent parfois "magique", c'est-à-dire trop étranger à des codeurs qui connaissent plus de rubis et de tests unitaires. RSPEC propose également du concombre et de la gerkine, qui sont des moyens d'écrire des histoires d'utilisateurs qui sont une acceptation client utile.

Minitest est intégré à Ruby 1.9. Avantages IMHO sont une vitesse rapide, très facile à lire / à écrire pour les codeurs d'autres langues et tests qui utilisent beaucoup le même style de code que vous utiliseriez dans votre code réel. Minitest a beaucoup plus que la plupart des gens savent, par exemple, Minitest Spec propose des matchers BDD apparentés à RSPEC, MiniTest Mock est un système moqueur et une référence minière est pour le profilage de la performance.

Dans mon expérience personnelle, les personnes qui construisent des applications Rails tendent vers RSPEC, et les personnes qui construisent du code de rubis pur tendent à une unité, de spécification, de simulation, de référence, etc. .


0 commentaires

1
votes

RSPEC est agréable mais je pense que récemment, il y a eu beaucoup de discussions et de mouvements derrière Minitest qui vient avec Ruby 1.9.x. Il a beaucoup de nénéties de RSPEC mais est beaucoup plus maigre et concise.


0 commentaires