cucumber / cucumber-cpp

Support for writing Cucumber step definitions in C++
MIT License
306 stars 131 forks source link

"NoMethodError" when run with cucumber 3.1.0 #179

Closed helmesjo closed 5 years ago

helmesjo commented 6 years ago

Summary

When running the cucumber-cpp (0.4) steprunner (implemented with GTest 1.8.0), it works in cucumber 2.4.0, but after upgrading to 3.1.0 the following error is thrown:

undefined method `registry' for #<Cucumber::Wire::StepDefinition:0x00559c62e5f098> (NoMethodError)

Expected Behavior

Runs steps & fails with "Pending"-error.

Current Behavior

An error was thrown, saying that the expected steps aren't implemented.

Steps to Reproduce (for bugs)

  1. Build and start steprunner: _simplesteprunner.cpp:
    GIVEN("^hello$") {
    pending();
    }
    THEN("^world$") {
    pending();
    }
  2. Run cucumber 3.1.0 with the following feature: simple.feature:

    # language: en
    Feature: The simplest
    Say Hello World
    
    Scenario: Say hello world
    Given hello
    Then world

Your Environment

flounderpinto commented 6 years ago

I am having this same issue as well. I'm trying to run the "Calc" example, and receive the same "undefined method" error.

Not sure if it's related, but when building the "features" target, everything is undefined, as in this SO post: https://stackoverflow.com/questions/43898833/cucumber-cpp-all-steps-undefined-in-example

Downgrading cucumber to v2.4.0 also fixes my problem, but doesn't fix building the "features" target.

Here's my configuration: CentOS 7.3 cucumber-cpp v0.4 Boost 1.53 Google Test 1.8

Gems: aruba (0.8.0) cucumber (3.1.0, 2.0.0) cucumber-core (3.1.0, 1.1.3) cucumber-expressions (5.0.13) cucumber-tag_expressions (1.1.1) cucumber-wire (0.0.1) gherkin (5.0.0, 2.12.2) rspec (3.7.0, 3.4.0) rspec-core (3.7.1, 3.4.4) rspec-expectations (3.7.0, 3.4.0) rspec-mocks (3.7.0, 3.4.1) rspec-support (3.7.1, 3.4.1)

raphaelmeyer commented 6 years ago

@tooky This is the issue I mentioned the other day. As I did not yet search for the cause, I don't know, if there is a related issue in cucumber-ruby.

fdefever commented 6 years ago

I bumped into similar issue today, using the latest cucumber-cpp (0.4) with cucumber ruby client (3.1.0 and 3.1.1) failed to work together, due to what seems to be a protocol mismatch between the cucumber server and client. Rolling back to cucumber ruby client 2.4.0 proved to be working.

muggenhor commented 6 years ago

I'm reasonably sure this is caused by a backwards compatible break in the wire protocol., similar to cucumber/cucumber-ruby#1183.