Apprends à tester tes exercices Ruby sur Exercism
Exécute les tests avec :
$ ruby hamming_test.rb
Seul le premier test sera exécuté, tous les autres ont été mis en attente à l'aide de la méthode skip. Supprime ou mets en commentaire le prochain skip au fur et à mesure que les tests passent.
skip
La méthode skip demande à la suite de tests de ne pas exécuter un test. On l'utilise couramment pour éviter d'exécuter les tests d'une fonctionnalité pas encore implémentée, afin de pouvoir se concentrer sur la partie en cours de travail.
Le récapitulatif de l'exécution des tests indique le nombre de tests ignorés. Tu dois désactiver tous les skip avant de terminer un exercice.
Si tu veux de la couleur, exécute les tests avec :
$ ruby hamming_test.rb -p
Si tu veux voir le nom des tests, exécute les tests avec :
$ ruby hamming_tests.rb -v
Si tu veux exécuter un seul test, tu peux en désigner un ou un groupe à l'aide d'une correspondance de type expression régulière.
$ ruby hamming_tests.rb -n /empty/
Tu peux aussi combiner les options.
skip
Maintenant que tu sais sélectionner les tests, individuellement ou par groupes, que tu veux exécuter, tu vas peut-être vouloir désactiver tous les skip.
Comme en Ruby on peut redéfinir les méthodes, si tu ajoutais cette ligne de code :
def skip ; end
comme ceci dans le fichier de test Hamming
class HammingTest < Minitest::Test
def skip ; end
def test_identical_strands
alors tous les skip seront toujours évalués, mais laisseront quand même les tests s'exécuter.
Bien sûr, modifier tous les fichiers au fil du temps peut devenir pénible, tu peux donc faire comme nous l'avons fait en développant les exercices... créer un fichier contenant la définition de skip, et le charger comme une bibliothèque quand on en a besoin.
Nous avons créé un dossier lib pour y ranger nos « aides », et il ressemble à ceci :
require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
# ruby -I../lib -rdisable_skip <filename_test.rb>
module Minitest
class Test
def skip(_msg='', _bt=caller)
end
end
end
L'explication de son utilisation figure en commentaire dans ce listing, et ce listing est complet.