I try to use MockMvc within Cucumber tests but no spring dependencies are resolved.
I've create this class :
@RunWith(Cucumber.class)
@CucumberOptions(format = "pretty", features = "src/test/resources/features"})
@SpringBootTest
public class CucumberTest {
}
to run cucumber feature
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 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 .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.
Add @ContextConfiguration(classes = .class) Like below
@RunWith(Cucumber.class)
@CucumberOptions(format = "pretty", features = "src/test/resources/features"})
@SpringBootTest
@ContextConfiguration(classes = <SpringBootApplication>.class)
public class CucumberTest {
}
This will work. I faced the same issue and got solved with this fix.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With