1

I try to perform some Cucumber tests of a Spring boot application.

It seems like Spring Boot is not started before tests are running.

What am i missing?

https://bitbucket.org/oakstair/spring-boot-cucumber-example

3 Answers 3

2

My Cucumber repo still runs without doing all the above steps:

https://github.com/BarathArivazhagan/Cucumber-spring-integration

Docs : https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html

To add more:

  1. @SpringBootTest takes care of loading the application context in that case @ContextConfiguration is reductant.

  2. Spring test automatically provides a bean of TestRestTemplate which can be autowired but still it should work with RestTemplate also.

  3. It still runs without RANDOM_PORT but RANDOM port can be also used in conjunction for testing.

Sign up to request clarification or add additional context in comments.

Comments

2

Let's say you have a feature file, feature1, and glueCode in org.xyz.feature1

@RunWith(Cucumber.class)
@CucumberOptions(
    plugin = {"pretty"},
    features = "src/test/java/resources/feature/feature1",
    glue = {"org.xyz.feature1"})
public class CucumberTest {

}

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class},
                webEnvironment = WebEnvironment.RANDOM_PORT)
@ContextConfiguration
@Ignore
@Transactional
public class FeatureTest extends CucumberTest {

  @LocalServerPort
    int randomServerPort;

  @Given("........")
  public void test_1 {

   }

}

Comments

1

I found the problem and has updated the repo.

I did the following to get it working:

  • Added RANDOM_PORT to @SpringBootTest
  • Added @ContextConfiguration
  • Switched from RestTemplate to TestRestTemplate

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.