Intellij无法运行测试用例黄瓜4.1

时间:2020-07-24 13:24:16

标签: ruby intellij-idea rubygems cucumber

最近我将我的黄瓜版本从3.1.2升级到4.1。现在,我无法从Intellij执行测试用例。错误是:

undefined method `feature' for nil:NilClass (NoMethodError)
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/formatter/ast_lookup.rb:105:in `initialize'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/formatter/ast_lookup.rb:30:in `new'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/formatter/ast_lookup.rb:30:in `step_source'
C:/Users/demo/AppData/Roaming/JetBrains/IntelliJIdea2020.1/plugins/ruby/rb/testing/patch/bdd/teamcity/cucumber/cucumber_4_formatter.rb:223:in `step_node_name'
C:/Users/demo/AppData/Roaming/JetBrains/IntelliJIdea2020.1/plugins/ruby/rb/testing/patch/bdd/teamcity/cucumber/cucumber_4_formatter.rb:93:in `on_test_step_finished'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/event_bus.rb:34:in `block in broadcast'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/event_bus.rb:34:in `each'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/event_bus.rb:34:in `broadcast'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/event_bus.rb:40:in `method_missing'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/runner.rb:37:in `around_hook'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/around_hook.rb:12:in `describe_to'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/case.rb:80:in `block (2 levels) in compose_around_hooks'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/case.rb:81:in `compose_around_hooks'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/case.rb:29:in `block in describe_to'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/runner.rb:19:in `test_case'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/filters/prepare_world.rb:11:in `test_case'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:57:in `test_case'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/filters/retry.rb:18:in `test_case'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/filters/quit.rb:11:in `test_case'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/filters/broadcast_test_run_started_event.rb:21:in `block in done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/filters/broadcast_test_run_started_event.rb:20:in `map'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/filters/broadcast_test_run_started_event.rb:20:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:62:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:62:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:62:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:62:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:62:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:62:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/filters/locations_filter.rb:20:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/filter.rb:62:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/test/filters/tag_filter.rb:18:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/compiler.rb:31:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core/gherkin/parser.rb:46:in `done'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core.rb:35:in `parse'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-core-7.1.0/lib/cucumber/core.rb:24:in `compile'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/runtime.rb:79:in `run!'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/lib/cucumber/cli/main.rb:29:in `execute!'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-4.1.0/bin/cucumber:9:in `<top (required)>'
C:/Ruby26-x64/bin/cucumber:23:in `load'
C:/Ruby26-x64/bin/cucumber:23:in `<main>'

因此,由于上述错误,我无法执行黄瓜测试用例。测试用例用红宝石编写。

但是如果我执行类似bundle exec cucumber --name <scenario-number>这样的测试用例,就可以了

如何解决此错误?这是插件问题吗?

2 个答案:

答案 0 :(得分:0)

这是一个问题,您在钩子(或类似地方)中正在做日志行或调用<input asp-for="D_From" type="date" onchange="myFunction()" id="dfrom" min="1945-01-01" max="9999-12-31" class="form-control"> <input asp-for="D_To" type="date" id="dto" class="form-control"> <script type="text/javascript"> function myFunction() { var x = document.getElementById("dfrom").value; document.getElementById("dto").min = x; var month = x.split('-')[1]; // chosen month var d = new Date(2008, month, 0); var lastDay = d.getDate(); // last day of month var maxDate = x.split('-')[0] + '-' + x.split('-')[1] + '-' + lastDay; document.getElementById("dto").max = maxDate; } </script> 或类似内容的行。

这是从v3-> v4升级的已知问题

答案 1 :(得分:0)

通过注释\ teamcity \ cucumber \ cucumber_4_formatter.rb step_node_name方法中的以下行,我能够“解决”此问题:

"#{@ast_lookup.step_source(test_step).step.keyword}#{test_step.text}"

请注意,您将无法看到RubyMine执行步骤的名称。