【问题标题】:Issues using rake to run tests使用 rake 运行测试的问题
【发布时间】:2015-01-07 12:03:00
【问题描述】:

我正在开发一个 Rails 3 项目。详细版本信息:

rake, version 10.3.2
Rails 3.0.20
ruby 1.8.7 (2013-06-27 patchlevel 374)

我最近在我们的测试套件中遇到了一些测试问题。如果我只运行rake 而不指定任务,rake 会运行整个测试套件,并且所有测试都会通过。但是,一个特定的任务:rake test:workers 给出了失败的测试。

在试图找出失败测试的真相时,我试图找出默认环境和我命名任务的环境之间的不同之处。但是,我在任何地方都找不到指定的默认任务。我在整个项目目录中搜索“task:default”,结果为空。我也尝试了rake -W :default,但没有成功。

另外,我运行的结果不同

ruby -I test <file path>

相对于

rake test:workers FILE=<file path>

前者运行没有失败的测试,后者有失败。此外,当我中断后一个(rake)命令时,我得到以下信息:

Command failed with status (1): [ruby -I"lib:test" -I"/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib" "/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib/rake/rake_test_loader.rb" "<file path>" ]

所以,看起来rake test:workers FILE=&lt;filename&gt; 真正做的只是在ruby -I 上运行一个变体并加载了更多目录。所以我在命令行尝试了:

ruby -I"lib:test" -I"/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib" "/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib/rake/rake_test_loader.rb" "<file path>"

这让我没有失败的测试。

总而言之,我可以使用ruby -I 运行单个测试并且没有失败的测试,但是当 rake 运行看似相同的命令时,我得到了失败的测试。

问题:

1) 我应该在哪里寻找我的 :default rake 任务?

2) rake 使用ruby -I 运行任务和我从命令行运行它有什么区别?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 rake


    【解决方案1】:

    不确定#1。您必须为它挖掘 Rails 代码。我可能会检查 .rake 文件。我最后只是说完蛋并重写了我们的默认任务:

    Rake::Task[:default].clear
    task :default => ['test:enqueue_javascripts', 'test:all']
    
    # test.rake
    namespace :test do
      task :javascripts => 'spec:javascript'
    
      # Run the javascript tests on process exit
      task :enqueue_javascripts do
        at_exit { Rake::Task['test:javascripts'].invoke }
      end
    end
    

    对于#2,-I 命令将在加载路径中添加一个目录。例如。 ruby -Itest path/to/test.rb。如果您的加载路径中已经包含目录,那么应该没有区别。除了通过 rake 运行的更多开销

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 2019-01-14
      • 2011-04-10
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多