我正在使用Ruby 1.9.3和Rails 3.2.8。这使用rake 0.9.2.2。如何使用rake检测失败的单元测试
我想检测一个失败的单元测试,在Rails 2.3中,我们通过检查退出代码来做到这一点。这不再有效。
我尝试:
rake test:units TEST=test/unit/failing_test.rb RAILS_ENV=test && echo "OK"
failing_test.rb由一个单一的测试,断言虚假的。我希望看到一个测试失败,并没有看到“OK”,而是,我看到:
Started
F
===============================================================================
Failure: <false> is not true.
test: failing test case should fail. (FailingTest)
test/unit/failing_test.rb:6:in `block (2 levels) in <class:FailingTest>'
shoulda-context (1.0.0) lib/shoulda/context/context.rb:398:in `call'
shoulda-context (1.0.0) lib/shoulda/context/context.rb:398:in `block in create_test_from_should_hash'
activesupport (3.2.8) lib/active_support/testing/setup_and_teardown.rb:72:in `block in run'
activesupport (3.2.8) lib/active_support/callbacks.rb:425:in `_run__3774233495015181374__setup__985181848351195933__callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.8) lib/active_support/callbacks.rb:385:in `_run_setup_callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:81:in `run_callbacks'
activesupport (3.2.8) lib/active_support/testing/setup_and_teardown.rb:70:in `run'
===============================================================================
Finished in 0.002753 seconds.
1 tests, 1 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
0% passed
363.24 tests/s, 363.24 assertions/s
rake aborted!
Command failed with status (1): [/Users/chris/.rvm/rubies/ruby-1.9.3-p194/b...]
Tasks: TOP => test:units
(See full trace by running task with --trace)
OK
具体而言,我请参阅“命令失败,状态(1)”,但这似乎通过给吃掉了耙,因为我也看到“OK”。请注意,如果我echo $?
,我看到退出代码是0(成功)。我试图在持续集成和我们的发布脚本的背景下工作,这两种方式都假设退出代码在发生错误时将不为零,就像Rails 2.3中发生的那样。
注意,有在Rails的本身类似的bug八个月前,看到https://github.com/rails/rails/issues/4923然而,这是固定的,我验证了承诺修复遗体在3.2.8中。 – ChrisInEdmonton
无法用ruby 1.9.3-p194,rails 3.2.8,rake 0.9.2.2(以及shoulda-context 1.0.0)重现。你可以发布你的'gem list'输出,也许你的测试文件的正文? – Araxia