Dica Rápida: Como executar apenas um teste

5 de junho de 2009  |  Ruby  | 

Usando o Test:Unit, se você não quiser executar todos os seus testes unitários, você pode mandar executar apenas um único caso de teste fazendo assim:

ruby user_test.rb

Mas se sua intenção é executar apenas um teste especifico dentro do caso de teste, você também pode fazer assim:

ruby user_test.rb --name test_should_require_login

8 Comentários


  1. Uma forma mais prática é -n /regex_que_bata_com_assinatura_do_teste_a_ser_executado/

    Por exemplo

    ruby user_test.rb -n /login/
  2. Pois é, este é o tipo de coisa prática que a gente sempre esquece. Este post mesmo foi escrito para me lembrar de como fazer isto.

  3. Muito bom..

    Será que existe alguma maneira de fazer isto com Rspec? rodar um teste específico dentro do spec?

  4. Sei que executando

    spec path/to/spec/file.rb

    você consegue rodar somente o arquivo especificado. O comando spec também tem a opção -e que funciona mais ou menos como a opção -n/--name dos exemplos acima.

  5. Ah sim, o spec para um arquivo específico já era conhecido, e a opção -e acabou não funcionando aqui.. recebi um “can’t convert nil into String” (rspec 1.2.6).. Vamos ver se mais uns testes diferentes resolvem..

    Obrigado..
    Abraços.
    Carlos.

  6. O único problema do -n é quando vc define os testes no formato:
    test “should require login” do; end

    Pra executar esse único teste, teria que converter manualmente pra versão com underscores. Eu criei um plugin bem simples que permite executar dessa forma:

    ruby user_test.rb -n “should require login”

    Tá no github: http://github.com/leonardoborges/readable_test_names_runner/tree/master

    Espero que seja útil. Pra mim economiza um bom tempo. ;)

  7. Legal, estão saindo boas dicas daqui!

  8. Outra opção que poucos conhecem é o comando `testrb`.

    testrb -n /pattern/ path/to/test/case.rb

    Para usar os nomes de classes:

    testrb -a path/to/tests/* -t /Pattern/

    Com esse comando é possível executar todos os testes que possuem `/Pattern/` no nome da classe.

    E para usar os nomes dos métodos:

    testrb -a path/to/tests/* -n /pattern/

    Creio que esse é mais útil. É possível executar todos os fontes de testes usando somente os métodos que fazem _match_ com /pattern/.

    Abraços.

Deixe um comentário