4.6. Step - 04 : Add Dummy Steps

Now, let’s add dummy steps to steps_addition.cpp File.

The updated directory structure would be like this:

.
|-- features
|   |-- step_definitions
|   |   |-- cucumber.wire
|   |   `-- steps_addition.cpp
|   |-- CMakeLists.txt
|   `-- simple-addition.feature
`-- CMakeLists.txt
  • features/step_definitions/steps_addition.cpp

    This file just has almost empty steps with pending().

    Note

    We could have use regular expressions to re-use the steps, but we will do that later in Step - 07 : Use regular expressions for tests. Right now, just taking a short-cut to keep things moving.

    #include <gtest/gtest.h>
    #include <cucumber-cpp/autodetect.hpp>
    
    // We could have used Regular Expressions here
    // to reduce the duplicated steps.
    // but we will introduce that concept later.
    
    GIVEN("^I have '1' and '3'$") {
        pending();
    }
    
    GIVEN("^I have '70' and '29'$") {
        pending();
    }
    
    WHEN("^I add them$") {
        pending();
    }
    
    THEN("^The result must be '4'$") {
        pending();
    }
    
    THEN("^The result must be '99'$") {
        pending();
    }
    

4.6.1. Changes

As compared to previous step (Step - 03 : Run tests with Wire and Cucumber), the diff is:

Files old/CMakeLists.txt and new/CMakeLists.txt are identical
Files old/features/CMakeLists.txt and new/features/CMakeLists.txt are identical
Files old/features/simple-addition.feature and new/features/simple-addition.feature are identical
Files old/features/step_definitions/cucumber.wire and new/features/step_definitions/cucumber.wire are identical
diff '--unified=3' --new-file --ignore-all-space --text --recursive --show-c-function --report-identical-files old/features/step_definitions/steps_addition.cpp new/features/step_definitions/steps_addition.cpp
--- old/features/step_definitions/steps_addition.cpp	2022-12-11 00:00:00.000000000 +0530
+++ new/features/step_definitions/steps_addition.cpp	2022-12-11 00:00:00.000000000 +0530
@@ -1,3 +1,27 @@
-// features/step_definitions/steps_addition.cpp
-//
-// Just an Empty CPP File to allow compilation.
+
+#include <gtest/gtest.h>
+#include <cucumber-cpp/autodetect.hpp>
+
+// We could have used Regular Expressions here
+// to reduce the duplicated steps.
+// but we will introduce that concept later.
+
+GIVEN("^I have '1' and '3'$") {
+    pending();
+}
+
+GIVEN("^I have '70' and '29'$") {
+    pending();
+}
+
+WHEN("^I add them$") {
+    pending();
+}
+
+THEN("^The result must be '4'$") {
+    pending();
+}
+
+THEN("^The result must be '99'$") {
+    pending();
+}

4.6.2. Pre-Compile

As mentioned in Step - 01 : Setup of C/C++ Code, please ensure you run CMake so that workspace is created, and run make all so that feature executable is compiled.

4.6.3. Running feature executable

As a first step, we need to run the feature executable in background.

./features/features -v &

If everything is setup perfectly, the output looks like this:

Listening on 127.0.0.1:3902

4.6.4. Running cucumber

Now let’s run Cucumber.

cucumber

The output is as follows. So far, with what ever we have done, this is as expected. We have not setup any steps and hence cucumber gives too many warnings (and helper snippets as well).

*** THIS RUBY IMPLEMENTATION DOESN'T REPORT FILE AND LINE FOR PROCS ***
# features/sample-addition.feature
Feature: Simple Addition
  
    Showcase simple addition for the BDD Book.

  Scenario: Addition of single digit numbers # features/simple-addition.feature:7
    Given I have '1' and '3'                 # steps_addition.cpp:9
       (Cucumber::Pending)
      features/simple-addition.feature:8:in `Given I have '1' and '3''
    When I add them                          # steps_addition.cpp:17
    Then The result must be '4'              # steps_addition.cpp:21

  Scenario: Addition of double digit numbers # features/simple-addition.feature:12
    Given I have '70' and '29'               # steps_addition.cpp:13
       (Cucumber::Pending)
      features/simple-addition.feature:13:in `Given I have '70' and '29''
    When I add them                          # steps_addition.cpp:17
    Then The result must be '99'             # steps_addition.cpp:25

2 scenarios (2 pending)
6 steps (4 skipped, 2 pending)
0m0.016s

As you can see, the output is different from Step - 03 : Run tests with Wire and Cucumber. We no longer see warning at the end of the execution that we are missing something. The warnings have moved from undefined to pending.