Respostas:
NOTA: Isso não executa o teste via rake
. Portanto, qualquer código que você possui Rakefile
NÃO será executado.
Para executar um único teste, use o seguinte comando no diretório principal do seu projeto Rails:
ruby -I test test/unit/my_model_test.rb -n test_name
Isso executa um único teste chamado "nome", definido na classe MyModelTest no arquivo especificado. O nome_da_teste é formado usando o nome do teste, acrescentando-o com a palavra "teste" e depois separando as palavras com sublinhados. Por exemplo:
class MyModelTest < ActiveSupport::TestCase
test "valid with good attributes" do
# do whatever you do
end
test "invalid with bad attributes" do
# do whatever you do
end
end
Você pode executar os dois testes via:
ruby -I test test/unit/my_model_test.rb
e apenas o segundo teste via
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Rails 3.0.7.
-n "/good/"
. A fuga de shell é sempre divertida, então eu costumo seguir expressões simples, mas é muito mais fácil do que escrever o nome completo do teste o tempo todo.
test/
pasta. Por exemplo, se eu quiser executar o teste activesupport/test/core_ext/array_ext_test.rb
, devo entrar activesupport/
primeiro.
-n "/good/"
trabalhou.
Execute um arquivo de teste :
rake test TEST=tests/functional/accounts_test.rb
Execute um único teste em um arquivo de teste:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Do comentário de @Puhlze.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
(encerrando /paid accounts/
com aspas simples)
Para trilhos 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Graças a @ James, a resposta parece ser:
rails test test/models/my_model.rb:22
Assumindo 22 é o número da linha do teste fornecido. De acordo com os trilhos de ajuda:
$ rails test --help
Você pode executar um único teste anexando um número de linha a um nome de arquivo:
bin/rails test test/models/user_test.rb:27
Além disso, observe que seu teste deve herdar de ActionDispatch :: IntegrationTest para que isso funcione (esse foi meu erro):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Nos trilhos 5,
Eu usei esse caminho para executar um único arquivo de teste (todos os testes em um arquivo)
rails test -n /TopicsControllerTest/ -v
Para executar um único teste no pacote Rails real:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Essa foi uma pergunta boba da meia-noite minha. O Rails gentilmente imprime o comando que está executando rake test
. O resto é um exercício de recortar e colar.
~/projects/rails/actionpack (my2.3.4)$ ruby -I"lib:test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/controller/base_test.rb"
A melhor maneira é consultar diretamente os guias: http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html#running-tests
cd actionmailer
bundle exec ruby -w -Itest test/mail_layout_test.rb -n test_explicit_class_layout
Se você deseja executar um único teste, basta executá-los como um script Ruby comum
ruby actionmailer/test/mail_layout_test.rb
Você também pode executar um conjunto inteiro (por exemplo, ActiveRecord ou ActionMailer) inserindo cd
o diretório e executando rake test
dentro dele.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
sim. Só para esclarecer (não tenho certeza se estou lendo isso errado, mas você disse "arquivos de teste gerados"), isso é para a própria biblioteca do Rails, não para um projeto do Rails.
Primeiro, acesse a pasta da lib que você deseja testar (isso é importante) e depois execute:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Pasta Rails
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Observe que você precisa carregar a pasta apropriada: "activerecord / test" (onde você tem o teste)