2009-09-03 4 views
7

Comment puis-je faire exécuter les tests de mon application Rails dans un ordre aléatoire? Existe-t-il une solution simple utilisant le râteau?Ruby - Exécution de tests dans un ordre aléatoire avec rake

+3

Pourquoi voudriez-vous faire cela? –

+2

Pour vous assurer qu'il n'y a pas de dépendances entre les tests? –

+1

Oui, le point principal pour nous est de s'assurer qu'il n'y a pas de dépendances entre les tests. –

Répondre

0

Vous pouvez consulter « ZenTest 3.9.0: maintenant avec plus mal » (ne peut pas faire un lien direct, utilisez le cache de Google)

Added ability to set test execution order, defaults to :random. EVIL! 
+0

J'ai joué un peu de temps avec ZenTest, mais je ne devine jamais comment activer l'ordre aléatoire. Je veux dire, l'ordre d'exécution par défaut est fixe et reste le même pour différentes exécutions de tests. –

4

Ici, vous allez, définir ceci dans lib/tasks/tasks.rb

namespace :test do 
    namespace :randomize do 
    desc "Randomize tests" 
    Rake::TestTask.new(:all => "db:test:prepare") do |t| 
     t.libs << "test" 
     t.test_files = Rake::FileList[ 
     'test/unit/**/*_test.rb', 
     'test/functional/**/*_test.rb', 
     'test/integration/**/*_test.rb' 
     ].shuffle 
     t.verbose = true 
    end 
    end 
end 

Run: rake test:randomize:all

Gardez à l'esprit que, dans les tests de fichiers seront toujours exécutés dans l'ordre où ils apparaissent. Je suppose que vous pourriez tester l'unité de test de singe pour permettre cela.

+0

Merci Sam. Cela ne fonctionne pas pour moi, et en fait la solution que vous avez publiée est la même que celle à laquelle je suis arrivé: il suffit de mélanger le tableau contenant la liste des fichiers de test à exécuter. En fait, l'ordre des fichiers de test que vous passez à rake TestTask semble être ignoré, ce qui signifie que rake interne triera alfabétiquement cette liste sur le nom du fichier. Je vérifie ce comportement en exécutant la tâche rake avec l'option TESTOPTS = "- v", pour surveiller l'ordre d'exécution réel du test. Voici les versions que j'utilise: Ruby: 1.8.6 - 114 RubyGems: 1.3.5 Rake: 0.8.7 Rails: 2.3.3 Avez-vous d'autres idées? Tx! –

Questions connexes