Eu posso executar todos os testes em um único arquivo com:
rake test TEST=path/to/test_file.rb
No entanto, se eu quiser executar apenas um teste nesse arquivo, como eu o faria?
Estou procurando uma funcionalidade semelhante a:
rspec path/to/test_file.rb -l 25
ruby
ruby-on-rails-3
minitest
Josiah Kiehl
fonte
fonte
rails test path/to/test_file.rb:25
ver @Derek_Hill ans - tirado de guides.rubyonrails.org/testing.html#the-rails-test-runnerRespostas:
Sim! Use a jóia "m" de Nick Quaranto . Com ele você pode dizer:
fonte
m
atualmente não funciona com este Minitest 5.0 .O comando deve ser:
fonte
TESTOPTS=...
fora-v
faz?Você tentou:
fonte
specify {}
? Eles aparecem comotest_0001_anonymous
... e pode haver váriostest_0001_anonymous
s se a mesma sintaxe for usada em vários blocos de descrição ... alguma sugestão para executar testes únicos nesse tipo de ambiente?cannot load such file -- test_helper
.ruby -Itest path/to/tc_file.rb --name test_method_name
como stackoverflow.com/a/15714985/327786bundle exec ruby -I lib path/to --name test_fit
Nenhuma jóia necessária:
ruby -Itest test/lib/test.rb --name /some_test/
Fonte: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
fonte
Essa é uma das coisas que me incomoda
string name definition
nos testes.Quando voce tem:
você sempre sabe como o seu teste é nomeado, para que você possa executá-lo assim:
Mas quando você tem algo como:
você nunca sabe ao certo como esse teste é nomeado internamente; portanto, não é possível usar a
-n
opção diretamente.Para saber como esse teste é nomeado internamente, você só tem uma opção: execute o arquivo inteiro para tentar descobrir os logs.
Minha solução alternativa é (temporariamente) adicionar algo ao nome do teste muito exclusivo, como:
e use a versão RegEx do parâmetro '-n' como:
fonte
__method__
dentro do contexto do método atualmente em execução (seu teste, nesta instância). A implementação atual resulta em algo como"does not break my stuff".gsub(" ", "_").prepend("test_")
. Em seguida, execute, por exemploruby -Itest test/integration/stuff_flow_test.rb --name test_does_not_break_my_stuff
,.Se você estiver usando o MiniTest com Rails 5+, a melhor maneira de executar todos os testes em um único arquivo é:
E para um único teste (por exemplo, na linha 25):
Veja http://guides.rubyonrails.org/testing.html#the-rails-test-runner
fonte
Você pode usar isso para executar um único arquivo:
Eu também usei
para melhor visualização.
fonte
Existem 2 maneiras de fazer isso:
Rake::TestTask
alvo para usar um carregador de testes diferente.Rake::TestTask
(do rake 0.8.7) teoricamente é capaz de passar opções adicionais paraMiniTest::Unit
uma"TESTOPTS=blah-blah"
opção de linha de comando, por exemplo:Na prática, a opção
--name
(um filtro para nomes de teste) não funcionará, devido a varreduras internas. Para corrigir isso, você precisará escrever um pequeno patch de macaco no seu Rakefile:Este patch requer que você crie um arquivo
test/my-minitest-loader.rb
:Para imprimir todas as opções possíveis para o Minitest, digite
fonte
rake
versão mais recente (0.9.2) e nenhuma correção de macaco é necessária.TESTOPTS="--name test_foobar"
não funciona, masTESTOPTS="--name=test_foobar"
funciona.Você pode passar
--name
para executar um teste pelo nome ou número dentro do nome:por exemplo:
Esse sinalizador está documentado no README do Minitest .
fonte
Se você estiver usando o Turn gem com minitest, certifique-se de usar a
Turn.config.pattern
opção, pois o corredor Turn Minitest não respeita a opção --name nos ARGs.fonte
name
opção. Obrigado! Sendo que Ligue já não está sendo mantido, eu pretendo migrar para minitest-repórteresNão é uma jóia que faz exatamente isso:
minitest-line
.de https://github.com/judofyr/minitest-line#minitest-line
fonte
eu uso
ruby /path/to/test -n /distinguishable word/
Edit:
-n
é uma abreviação de--name
.distinguishable word
pode ser qualquer string que você insira na descrição do teste, geralmente uso uma palavra aleatória que sei que não estará presente nas descrições de outros testes.fonte
-n
parâmetro significa?--name
. Apenas uma coisa de conveniência. Especialmente útil com o / regex /, geralmente coloco algumas palavras aleatórias no nome de um teste (que eu sei que não estará presente nas descrições de outros testes).A seguir funcionará
Isso pode ser executado por
fonte
rails test path/to/test_file.rb:25
vai fazer issofonte