Aprenda a testar seus exercícios de Ruby no Exercism
Execute os testes com:
$ ruby hamming_test.rb
Só o primeiro teste será executado; todos os outros foram deixados como pendentes
por meio do método skip. Apague ou comente o próximo skip conforme você for
passando em cada teste.
O método skip instrui a suíte de testes a não rodar um teste. Isso é usado com frequência para evitar rodar testes de funcionalidades ainda não implementadas, para que você possa focar na parte em que está trabalhando no momento.
O resumo da execução dos testes vai listar o número de testes ignorados. Você deve desativar todos os skips antes de concluir um exercício.
Se você quiser cores, execute os testes com:
$ ruby hamming_test.rb -p
Se você quiser ver os nomes dos testes, execute os testes com:
$ ruby hamming_tests.rb -v
Se você quiser rodar apenas um teste, pode especificar um ou um grupo com correspondência no estilo de expressão regular.
$ ruby hamming_tests.rb -n /empty/
Você também pode combinar as opções.
Agora que você tem o novo poder de selecionar os testes individuais ou os grupos de testes que quer rodar, talvez você queira desativar todos os skips.
Aproveitando o fato de que em Ruby os métodos podem ser sobrescritos, se você adicionasse esta linha de código:
def skip ; end
assim no arquivo de teste do Hamming
class HammingTest < Minitest::Test
def skip ; end
def test_identical_strands
então todos os skips continuariam sendo avaliados, mas deixariam seus testes rodar.
É claro que ficar editando todos os arquivos o tempo todo pode ser irritante, então você pode fazer como nós fizemos ao desenvolver os exercícios... criar um arquivo que contenha a definição de skip e fazer require dele como biblioteca quando quisermos.
Nós criamos uma pasta lib para guardar nossos "auxiliares", e ela se parece
com isto:
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
A descrição de como usá-lo está comentada nessa listagem de arquivo, e a listagem de arquivo está em seu estado completo.