Skip to content

Commit 0076e50

Browse files
committed
build: bump cucumber to 7 and used junit bom
The CucumberContextConfiguration does not work well with lambda's (cucumber-java8) hence I had to extract the configuration out of the stepdef as suggested in cucumber/cucumber-jvm#2413 Signed-off-by: Paul Williams <[email protected]>
1 parent 61ddb83 commit 0076e50

File tree

5 files changed

+42
-52
lines changed

5 files changed

+42
-52
lines changed

Diff for: acceptance-test/pom.xml

+1-19
Original file line numberDiff line numberDiff line change
@@ -31,36 +31,18 @@
3131
<artifactId>cucumber-java8</artifactId>
3232
<version>${cucumber.version}</version>
3333
<scope>test</scope>
34-
<exclusions>
35-
<exclusion>
36-
<groupId>org.apiguardian</groupId>
37-
<artifactId>apiguardian-api</artifactId>
38-
</exclusion>
39-
</exclusions>
4034
</dependency>
4135
<dependency>
4236
<groupId>io.cucumber</groupId>
43-
<artifactId>cucumber-junit</artifactId>
37+
<artifactId>cucumber-junit-platform-engine</artifactId>
4438
<version>${cucumber.version}</version>
4539
<scope>test</scope>
46-
<exclusions>
47-
<exclusion>
48-
<groupId>org.apiguardian</groupId>
49-
<artifactId>apiguardian-api</artifactId>
50-
</exclusion>
51-
</exclusions>
5240
</dependency>
5341
<dependency>
5442
<groupId>io.cucumber</groupId>
5543
<artifactId>cucumber-spring</artifactId>
5644
<version>${cucumber.version}</version>
5745
<scope>test</scope>
58-
<exclusions>
59-
<exclusion>
60-
<groupId>org.apiguardian</groupId>
61-
<artifactId>apiguardian-api</artifactId>
62-
</exclusion>
63-
</exclusions>
6446
</dependency>
6547
</dependencies>
6648
<build>

Diff for: acceptance-test/src/test/java/packagename/cucumber/ExampleStepDef.java

-11
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,23 @@
11
package packagename.cucumber;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4-
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
54

65
import io.cucumber.datatable.DataTable;
76
import io.cucumber.java8.En;
87
import io.cucumber.java8.HookNoArgsBody;
9-
import io.cucumber.spring.CucumberContextConfiguration;
108
import java.util.List;
119
import java.util.Map;
1210
import java.util.stream.Collectors;
13-
import org.junit.jupiter.api.extension.ExtendWith;
14-
import org.springframework.boot.test.context.SpringBootTest;
1511
import org.springframework.boot.test.web.client.TestRestTemplate;
1612
import org.springframework.boot.web.server.LocalServerPort;
1713
import org.springframework.http.HttpStatus;
1814
import org.springframework.http.ResponseEntity;
19-
import org.springframework.test.context.ActiveProfiles;
20-
import org.springframework.test.context.junit.jupiter.SpringExtension;
21-
import packagename.boot.ExampleApplication;
2215
import packagename.domain.model.Example;
2316
import packagename.domain.model.ExampleInfo;
2417
import packagename.repository.dao.ExampleDao;
2518
import packagename.repository.entity.ExampleEntity;
2619
import packagename.rest.exception.ExampleExceptionResponse;
2720

28-
@ExtendWith(SpringExtension.class)
29-
@SpringBootTest(classes = ExampleApplication.class, webEnvironment = RANDOM_PORT)
30-
@CucumberContextConfiguration
31-
@ActiveProfiles("test")
3221
public class ExampleStepDef implements En {
3322

3423
private static final String LOCALHOST = "http://localhost:";
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
package packagename.cucumber;
22

3-
import io.cucumber.junit.Cucumber;
4-
import io.cucumber.junit.CucumberOptions;
5-
import org.junit.runner.RunWith;
3+
import static io.cucumber.junit.platform.engine.Constants.*;
64

7-
@RunWith(Cucumber.class)
8-
@CucumberOptions(
9-
features = "classpath:features",
10-
plugin = {"json:target/cucumber/example.json", "json:target/cucumber/example.xml"},
11-
tags = "@Example",
12-
glue = "classpath:packagename.cucumber")
5+
import org.junit.platform.suite.api.ConfigurationParameter;
6+
import org.junit.platform.suite.api.ConfigurationParameters;
7+
import org.junit.platform.suite.api.IncludeEngines;
8+
import org.junit.platform.suite.api.SelectClasspathResource;
9+
import org.junit.platform.suite.api.Suite;
10+
11+
@Suite
12+
@IncludeEngines("cucumber")
13+
@SelectClasspathResource("features/example.feature")
14+
@ConfigurationParameters({
15+
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "packagename.cucumber"),
16+
@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "@Example"),
17+
@ConfigurationParameter(key = JUNIT_PLATFORM_NAMING_STRATEGY_PROPERTY_NAME, value = "long"),
18+
@ConfigurationParameter(key = PLUGIN_PUBLISH_QUIET_PROPERTY_NAME, value = "true"),
19+
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "json:target/cucumber/cucumber.json")
20+
})
1321
public class RunCucumberExampleTest {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package packagename.cucumber;
2+
3+
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
4+
5+
import io.cucumber.spring.CucumberContextConfiguration;
6+
import org.springframework.boot.test.context.SpringBootTest;
7+
import org.springframework.test.context.ActiveProfiles;
8+
import packagename.boot.ExampleApplication;
9+
10+
@SpringBootTest(classes = ExampleApplication.class, webEnvironment = RANDOM_PORT)
11+
@CucumberContextConfiguration
12+
@ActiveProfiles("test")
13+
public class SpringCucumberTestConfig {}

Diff for: pom.xml

+11-13
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@
1212
<java.version>11</java.version>
1313
<maven.compiler.source>${java.version}</maven.compiler.source>
1414
<maven.compiler.target>${java.version}</maven.compiler.target>
15+
<junit-jupiter.version>5.8.1</junit-jupiter.version>
1516
<spring-boot.version>2.5.6</spring-boot.version>
16-
<cucumber.version>6.11.0</cucumber.version>
17+
<cucumber.version>7.0.0</cucumber.version>
1718
<springdoc.version>1.5.12</springdoc.version>
1819
<pre-liquibase.version>1.1.1</pre-liquibase.version>
1920
<!-- plugins -->
@@ -63,6 +64,13 @@
6364
<version>${project.version}</version>
6465
</dependency>
6566
<!-- Frameworks & Libraries -->
67+
<dependency>
68+
<groupId>org.junit</groupId>
69+
<artifactId>junit-bom</artifactId>
70+
<version>${junit-jupiter.version}</version>
71+
<type>pom</type>
72+
<scope>import</scope>
73+
</dependency>
6674
<dependency>
6775
<groupId>org.springframework.boot</groupId>
6876
<artifactId>spring-boot-dependencies</artifactId>
@@ -93,22 +101,12 @@
93101
<!-- JUnit 5 dependencies -->
94102
<dependency>
95103
<groupId>org.junit.jupiter</groupId>
96-
<artifactId>junit-jupiter-engine</artifactId>
97-
<scope>test</scope>
98-
</dependency>
99-
<dependency>
100-
<groupId>org.junit.vintage</groupId>
101-
<artifactId>junit-vintage-engine</artifactId>
102-
<scope>test</scope>
103-
</dependency>
104-
<dependency>
105-
<groupId>org.junit.platform</groupId>
106-
<artifactId>junit-platform-launcher</artifactId>
104+
<artifactId>junit-jupiter</artifactId>
107105
<scope>test</scope>
108106
</dependency>
109107
<dependency>
110108
<groupId>org.junit.platform</groupId>
111-
<artifactId>junit-platform-runner</artifactId>
109+
<artifactId>junit-platform-suite</artifactId>
112110
<scope>test</scope>
113111
</dependency>
114112
<!-- mockito dependencies -->

0 commit comments

Comments
 (0)