Testes de desempenho dos trilhos "Teste de rake: benchmark" e "teste de rake: perfil" me dê erros

StackOverflow https://stackoverflow.com/questions/2542520

Pergunta

Estou tentando executar um teste de desempenho padrão em branco com o Ruby 1.9 e o Rails 2.3.5 e simplesmente não consigo fazer funcionar! O que estou perdendo aqui???

rails testapp
cd testapp
script/generate scaffold User name:string
rake db:migrate
rake test:benchmark

-

/usr/local/bin/ruby19 -I"lib:test" "/usr/local/lib/ruby19/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/performance/browsing_test.rb" -- --benchmark
Loaded suite /usr/local/lib/ruby19/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
/usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:in `rescue in const_missing': uninitialized constant BrowsingTest::STARTED (NameError)
    from /usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:94:in `const_missing'
    from /usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/testing/performance.rb:38:in `run'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:415:in `block (2 levels) in run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:409:in `each'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:409:in `block in run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:408:in `each'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:408:in `run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:388:in `run'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:329:in `block in autorun'
rake aborted!
Command failed with status (1): [/usr/local/bin/ruby19 -I"lib:test" "/usr/l...]
Foi útil?

Solução

Ver isto. Para um patch, veja aqui.

Outras dicas

OK, o problema é que o Ruby 1.8 usou o teste :: unidade como sua biblioteca de testes padrão. No Ruby 1.9, que mudou para o MinITest.

Versões do ActiveSupport antes de 3.1.0 Teste :: Unidade assumida. Parece que foi abordado em 3.1.0 e posterior. Se você estiver usando o Rails 3.0.9, ele depende do ActiveSupport 3.0.9, para que você não possa pedir versões posteriores no seu GemFile.

Encontrado isto via Google. Aparentemente, a biblioteca Test :: Unit ainda está disponível, mas como uma jóia chamada 'Test-Unit'.

Então, no meu gemfile no topo antes da jóia do Rails, eu coloquei:

gem 'test-unit', '~> 2.3.0'

Então eu fiz o teste de rake: benchmark e funcionou!

Eu acho que é um bug. Sou capaz de executar o código com o Ruby 1.8.6 (2008-08-11 Patchlevel 287) [Universal-Darwin9.0]. Sob Ruby 1.9.1, recebo uma exceção como a que você descreve.

Quando chega ao ActiveSupport :: Testing :: Performance#Run (em Rails), causa uma exceção na linha yield(self.class::STARTED, name) onde tenta encontrar a constante :: start. Ruby Proft também tem um método semelhante, em Rubyprof :: Test#Run.

Não sei quem é o culpado aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top