I am trying to use MockMvc in Cucumber tests, but spring dependencies are not allowed.
I create this class:
@RunWith(Cucumber.class) @CucumberOptions(format = "pretty", features = "src/test/resources/features"}) @SpringBootTest public class CucumberTest { }
to start the cucumber function
And this class for steps:
@WebMvcTest(VersionController.class) @AutoConfigureWebMvc public class VersionControllerSteps { @Autowired private MockMvc mvc; private MvcResult result; @When("^the client calls /version$") public void the_client_issues_GET_version() throws Throwable { result = mvc.perform(get("/version")).andDo(print()).andReturn(); } @Then("^the client receives status code of (\\d+)$") public void the_client_receives_status_code_of(int statusCode) throws Throwable { assertThat(result.getResponse().getStatus()).isEqualTo(statusCode); } @And("^the client receives server version (.+)$") public void the_client_receives_server_version_body(String version) throws Throwable { assertThat(result.getResponse().getContentAsString()).isEqualTo(version); } }
but this is a throw exception:
java.lang.NullPointerException at com.example.rest.VersionControllerSteps.the_client_issues_GET_version(VersionControllerSteps.java:30) at ✽.When the client calls /version(version.feature:8)
Here is the meaning of .feature:
Feature: the version can be retrieved As a api user I want to know which api version is exposed In order to be a good api user Scenario: client makes call to GET /version When the client calls /version Then the client receives status code of 200 And the client receives server version 1.0
How to configure my test to use cucumber and spring-boot?
Thanks in advance.
source share