最近我将我的黄瓜版本从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>
这样的测试用例,就可以了
如何解决此错误?这是插件问题吗?
答案 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执行步骤的名称。