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:
Mas se sua intenção é executar apenas um teste especifico dentro do caso de teste, você também pode fazer assim:
Uma forma mais prática é
-n /regex_que_bata_com_assinatura_do_teste_a_ser_executado/Por exemplo
ruby user_test.rb -n /login/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.
Muito bom..
Será que existe alguma maneira de fazer isto com Rspec? rodar um teste específico dentro do spec?
Sei que executando
spec path/to/spec/file.rbvocê consegue rodar somente o arquivo especificado. O comando spec também tem a opção
-eque funciona mais ou menos como a opção-n/--namedos exemplos acima.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.
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. ;)
Legal, estão saindo boas dicas daqui!
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.