无法让黄瓜在Windows下使用Ruby 2.x.

时间:2014-12-31 02:33:11

标签: ruby windows cucumber

当我运行黄瓜时,我收到以下消息:

*** WARNING: You must use ANSICON 1.31 or higher (http://adoxa.110mb.com/ansicon) to get coloured output on Windows
Warning: you should require 'minitest/autorun' instead.
Warning: or add 'gem "minitest"' before 'require "minitest/autorun"'
From:
  C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/core_ext/disable_mini_and_test_unit_autorun.rb:3:in `<top (required)>'
  C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/runtime.rb:21:in `initialize'
  C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/cli/main.rb:40:in `new'
  C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/cli/main.rb:40:in `execute!'
  C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/cli/main.rb:20:in `execute'
  C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/bin/cucumber:14:in `<top (required)>'
  C:/RailsInstaller/Ruby2.1.0/bin/cucumber:23:in `load'
  C:/RailsInstaller/Ruby2.1.0/bin/cucumber:23:in `<main>'
MiniTest::Unit::TestCase is now Minitest::Test. From     C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/test/unit/testcase.rb:8:in `<module:Unit>'
undefined method `_run_suite' for class `Test::Unit::Runner' (NameError)
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/test/unit.rb:676:in `<class:Runner>'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/test/unit.rb:261:in `<module:Unit>'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/test/unit.rb:15:in `<module:Test>'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/test/unit.rb:7:in `<top (required)>'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/core_ext/disable_mini_and_test_unit_autorun.rb:25:in `<top (required)>'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/runtime.rb:21:in `initialize'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/cli/main.rb:40:in `new'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/cli/main.rb:40:in `execute!'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/lib/cucumber/cli/main.rb:20:in `execute'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/cucumber-1.2.1/bin/cucumber:14:in `<top (required)>'
C:/RailsInstaller/Ruby2.1.0/bin/cucumber:23:in `load'
C:/RailsInstaller/Ruby2.1.0/bin/cucumber:23:in `<main>'

bundle list给了我:

DL is deprecated, please use Fiddle
Gems included by the bundle:
  * builder (3.2.2)
  * bundler (1.7.7)
  * cucumber (1.2.1)
  * diff-lcs (1.1.3)
  * gherkin (2.11.8)
  * json (1.8.1)
  * minitest (4.7.5)
  * multi_json (1.10.1)
  * rspec-expectations (2.11.2)

基于堆栈交换的类似问题,我在`features \ support \ env.rb'中有以下内容:

require 'minitest'
module MiniTestAssertions
  def self.extended(base)
    base.extend(MiniTest::Assertions)
    base.assertions = 0
  end

  attr_accessor :assertions
end
World(MiniTestAssertions)

让黄瓜工作的下一步是什么?

编辑:

我尝试在一个完全空的目录中运行黄瓜(期望得到一个警告,没有定义任何功能),但得到完全相同的消息:关于minitest的警告,然后是关于undefined method '_run_suite'的错误。 Evertyhing我可以在网上找到关于这个与Rails(我没有使用)有关或者说这是一个已修复的旧问题,所以我完全卡住了。 :(

2 个答案:

答案 0 :(得分:0)

为什么你不能使用ruby 1.9进行这项练习?

最新版本的The Cucumber Book - 版本3.0 - 于2014年3月发布,当时ruby 1.9.3是最常用的ruby版本。

本书的代码使用ruby 1.9.3-p194进行了测试(如Appendix 2 - Installing Cucumber部分所述)。

作者/ pragprog可能会出版该书的新版本,届时他们将确保本书中的代码与ruby 2.2或当时最常用的ruby版本一起使用。

很有可能弄清楚如何使这些示例适用于ruby 2.0或更高版本,但这是令人头疼的我建议您此时不要关心自己。鉴于您刚刚开始学习黄瓜,最好根据它推荐的版本来阅读本书中的文字。

在熟悉黄瓜和红宝石世界的其他组成部分之后,你会理解为什么我找到“我如何说服它使用RSpec?”非常好笑: - )

答案 1 :(得分:-1)

如您所知,开发环境的配置是一项繁琐且容易出错的任务。我更喜欢在* nix类型的环境中工作,你可以使用VirtualBox或一些Docker-for-Windows安排在你的Windows机器上实现。

如果您可以为Windows启动并运行这样的Docker配置,那么这可能是您快速解决问题的最佳选择,因为Docker完全是为了共享/重用预先配置的环境/部署,这可能是真实的省时间!已经有一些很好的Dockerfile配置可以帮助您查看要安装的组件。请参阅:thisthat

顺便说一句,如果你更喜欢使用rspec而不是minitest(谁不会?),你会想要使用一些不需要“minitest”的示例代码。如果您只想让当前示例正常工作,您可能会接受错误消息给出的“require'minitest / autorun'”的想法。我希望它对你有所帮助 - 祝你好运!