2009-02-08 19 views
2

J'utilise actuellement test/unit, et j'envisage d'utiliser rspec. Cependant, j'ai remarqué que rspec currently ne supporte pas heckle dans ruby ​​1.9.1, et ne supporte pas de passer des paramètres à chahuter en dehors du module/class/méthode cible.Quelle est la compatibilité entre rspec et heckle?

Existe-t-il d'autres problèmes actuels liés à l'utilisation de heckle et de rspec, ou fonctionnent-ils bien ensemble en dehors de ces deux problèmes?

Aussi, si je reste avec test/unité pour le moment, devrais-je envisager de l'utiliser avec du concombre?

Modifier: La question 1.9.1 est pas la faute de rspec - Heckle ne peut pas fonctionner sur ruby 1.9.1 parce que ne peut pas exécuter arbre syntaxique sur Ruby 1.9.1.

Répondre

4

La dernière fois que j'ai vérifié, Heckle + RSpec ne fonctionnait pas très bien, et je ne pense pas que beaucoup de gens les utilisent ensemble. Au printemps 2008, je me suis penché sur cette question et j'ai remarqué que RSpec et Heckle n'avaient pas travaillé ensemble depuis un certain temps. J'ai fait un patch et il a été accepté dans RSpec 1.1.14. Même après ces changements, je n'ai pas trouvé Heckle très utilisable. Si je me souviens bien, le problème est que Heckle lui-même se bloque avec des programmes non triviaux.

Il est vraiment dommage que la situation soit ce qu'elle est. Si vous voulez aider, vous pouvez regarder le projet boo-hiss: http://github.com/halorgium/boo_hiss/tree/master.

Mise à jour: Après une pause de deux ans, une nouvelle version de Heckle (Heckle 1.4.2) a été publiée la semaine dernière. Peut-être que cela a réglé les problèmes que j'ai vécus.

+0

Merci pour cela. Maintenant, pour le faire installer ... –

0

Je suis actuellement en cours d'exécution heckle 1.4.2 et rspec 1.2.4 pour tester Addressable. Je recommande d'utiliser la commande spec directement pour chahuter n'importe quoi plutôt que de le configurer à travers une tâche de rake. Heckling est quelque chose que je fais généralement juste avant une sortie, plutôt que pendant le développement régulier, car il prend beaucoup de temps. Et quand vous essayez de retrouver les mutations survivantes, vous voudrez probablement aller méthode par méthode. Les versions plus anciennes de RSpec étaient beaucoup plus bavardes - vidant les résultats de la spécification pour toutes les spécifications défaillantes - mais j'ai envoyé un patch qui corrige cela. Toutes les versions récentes n'ont pas ce problème, et le chahut devrait fonctionner très bien.

Par exemple:

spec spec/**/*_spec.rb --heckle Addressable::URI#normalize 

Sortie:

********************************************************************** 
*** Addressable::URI#normalize loaded with 25 possible mutations 
********************************************************************** 

25 mutations remaining... 
24 mutations remaining... 
23 mutations remaining... 
22 mutations remaining... 
21 mutations remaining... 
20 mutations remaining... 
19 mutations remaining... 
18 mutations remaining... 
17 mutations remaining... 
16 mutations remaining... 
15 mutations remaining... 
14 mutations remaining... 
13 mutations remaining... 
12 mutations remaining... 
11 mutations remaining... 
10 mutations remaining... 
9 mutations remaining... 
8 mutations remaining... 
7 mutations remaining... 
6 mutations remaining... 
5 mutations remaining... 
4 mutations remaining... 
3 mutations remaining... 
2 mutations remaining... 
1 mutations remaining... 
No mutants survived. Cool! 

(résultats non typique.)

+0

Pensez-vous que le chahut serait plus rapide si la méthode de test savait finir quand il a rencontré son premier test défaillant, et savait dans quel ordre ordonner les méthodes de test pour obtenir un échec précoce? –

+0

Je pense qu'il serait impossible d'optimiser la commande, mais un coureur de spec personnalisé pourrait court-circuiter les choses, et oui, cela accélérerait les choses. –