Testes na trilha do Ruby

Aprenda a testar seus exercícios de Ruby no Exercism


Executando os testes

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.

Entendendo os skips

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.

Personalizando o relatório de testes

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.

Desativando todos os skips

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.

Do jeito rápido e improvisado

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.

Ainda rápido, mas mais limpo

É 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.