Rails Rake Test:错误运行测试:单位! #

时间:2012-12-21 17:30:10

标签: ruby-on-rails unit-testing testing rake

Errors running test:units! #<RuntimeError: Command failed with status (1): [ruby -I"lib:test" -I"/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.2/lib" "/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.2/lib/rake/rake_test_loader.rb" "test/unit/**/*_test.rb" ]>

这是否意味着我的单位测试文件或我的模型有什么东西?或者它可能是吗?

以下全部跟踪。

[app:]$ rake test --trace
** Invoke test (first_time)
** Execute test
** Invoke test:run (first_time)
** Execute test:run
** Invoke test:units (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment 
** Invoke db:load_config 
** Execute db:test:purge
** Execute db:test:load
** Invoke db:test:load_schema (first_time)
** Invoke db:test:purge 
** Execute db:test:load_schema
** Invoke db:schema:load (first_time)
** Invoke environment 
** Invoke db:load_config 
** Execute db:schema:load
** Execute test:prepare
** Execute test:units
Run options: 

# Running tests:

..F

Finished tests in 0.411867s, 7.2839 tests/s, 7.2839 assertions/s.

  1) Failure:
test_should_save_user_with_valid_email_and_password(UserTest) [/Users/jake/Sites/app/test/unit/user_test.rb:9]:
Didn't save a valid record

3 tests, 3 assertions, 1 failures, 0 errors, 0 skips
** Invoke test:functionals (first_time)
** Invoke test:prepare 
** Execute test:functionals
Run options: 

# Running tests:



Finished tests in 0.004578s, 0.0000 tests/s, 0.0000 assertions/s.

0 tests, 0 assertions, 0 failures, 0 errors, 0 skips
** Invoke test:integration (first_time)
** Invoke test:prepare 
** Execute test:integration
Errors running test:units! #<RuntimeError: Command failed with status (1): [ruby -I"lib:test" -I"/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.2/lib" "/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.2/lib/rake/rake_test_loader.rb" "test/unit/**/*_test.rb" ]>

修改

此错误仅在rake返回错误时显示。如果没有错误,运行测试的错误也不会显示... Curiouser和curiouser ......

2 个答案:

答案 0 :(得分:12)

当您的某个测试未通过时,这是标准响应。我用一个模型创建了一个空项目,并添加了以下单元测试:

require 'test_helper'

class BlobTest < ActiveSupport::TestCase
  test "test errors" do
    assert false
  end
end

然后我跑了它:

dhcp168:unittest pmorse$ rake test
Run options: 

# Running tests:

F

Finished tests in 0.030618s, 32.6605 tests/s, 32.6605 assertions/s.

  1) Failure:
test_test_errors(BlobTest) [/Users/pmorse/Projects/unittest/test/unit/blob_test.rb:8]:
Failed assertion, no message given.

1 tests, 1 assertions, 1 failures, 0 errors, 0 skips
Run options: 

# Running tests:

.......

Finished tests in 0.123589s, 56.6393 tests/s, 80.9133 assertions/s.

7 tests, 10 assertions, 0 failures, 0 errors, 0 skips
Errors running test:units! #<RuntimeError: Command failed with status (1): [ruby -I"lib:test" -I"/Users/pmorse/.rvm/gems/ruby-1.9.3-p194@rails/gems/rake-10.0.3/lib" "/Users/pmorse/.rvm/gems/ruby-1.9.3-p194@rails/gems/rake-10.0.3/lib/rake/rake_test_loader.rb" "test/unit/**/*_test.rb" ]>

我怀疑是因为Test :: Unit向Rake返回一个错误代码,而Rake正在返回此输出,这使得它看起来像是错误的。 (我想有些事情是错的:你的测试没有通过。)

答案 1 :(得分:0)

我也遇到了这个问题。

4小时后调查。我发现我定义了一个范围,假设数据库中必须有记录。喜欢

scope :has_no_rep, where('country_id != ?', Country.global.id)`

def self.global
  Country.where(:code => GLOBAL_CODE).first
end

然后在初始化测试环境期间“加载”此范围。将引发错误,这将导致问题..

所以我对这个问题的建议是。为你的开发环境设置一个新的空数据库(实际上,更像测试的环境越好)。并尝试rails s。这可以帮助您找到错误。而不是恼人的“命令以状态X失败”