Skip to content

Commit 6ed2409

Browse files
committed
Refactor tests such that the same tests can be run as unit- and ed2-tests
1 parent 15ebc0c commit 6ed2409

File tree

6 files changed

+44
-10
lines changed

6 files changed

+44
-10
lines changed

.github/actions/integration-test/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ runs:
7272
--batch-mode \
7373
--color always \
7474
--define ci \
75-
failsafe:integration-test failsafe:verify \
75+
failsafe:integration-test@e2e-test failsafe:verify@e2e-test \
7676
|| return_code="${?}"
7777
7878
echo "Stopping Application"

pom.xml

+17-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<maven.compiler.release>17</maven.compiler.release>
3434
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3535
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
36+
<run-e2e-test>false</run-e2e-test>
3637

3738
<!-- Dependency versions -->
3839
<lombok.version>1.18.28</lombok.version>
@@ -52,17 +53,32 @@
5253
<version>${surefire-plugin.version}</version>
5354
<executions>
5455
<execution>
56+
<id>e2e-test</id>
5557
<goals>
5658
<goal>integration-test</goal>
5759
<goal>verify</goal>
5860
</goals>
59-
<phase>verify</phase>
61+
<phase>none</phase>
62+
<configuration>
63+
<argLine>-Dspring.profiles.active=e2e</argLine>
64+
<includes>
65+
<include>**/*CucumberTest.java</include>
66+
</includes>
67+
</configuration>
6068
</execution>
6169
</executions>
6270
</plugin>
6371
<plugin>
6472
<artifactId>maven-surefire-plugin</artifactId>
6573
<version>${surefire-plugin.version}</version>
74+
<executions>
75+
<execution>
76+
<id>default-test</id>
77+
<configuration>
78+
<argLine>-Dspring.profiles.active=test</argLine>
79+
</configuration>
80+
</execution>
81+
</executions>
6682
</plugin>
6783
<plugin>
6884
<groupId>net.revelc.code.formatter</groupId>

src/test/java/de/turing85/spring/fileupload/FileUploadIT.java renamed to src/test/java/de/turing85/spring/fileupload/FileUploadCucumberTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
@SelectClasspathResource("de/turing85/spring/fileupload")
1111
@CucumberContextConfiguration
1212
@ContextConfiguration(classes = FileUploadApplication.class)
13-
@SpringBootTest
14-
class FileUploadIT {
13+
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
14+
class FileUploadCucumberTest {
1515
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,30 @@
11
package de.turing85.spring.fileupload;
22

3+
import java.net.URI;
4+
5+
import de.turing85.spring.fileupload.actor.FileUploadActor;
6+
import io.cucumber.spring.ScenarioScope;
7+
import org.springframework.beans.factory.annotation.Value;
38
import org.springframework.boot.autoconfigure.SpringBootApplication;
9+
import org.springframework.boot.test.web.server.LocalServerPort;
10+
import org.springframework.context.annotation.Bean;
11+
import org.springframework.context.annotation.Profile;
412

513
@SpringBootApplication
614
class TestApplication {
15+
@Bean
16+
@ScenarioScope
17+
@Profile("test")
18+
static FileUploadActor testActor(
19+
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
20+
@LocalServerPort int port) {
21+
return new FileUploadActor(URI.create("http://localhost:%d".formatted(port)));
22+
}
23+
24+
@Bean
25+
@ScenarioScope
26+
@Profile("e2e")
27+
static FileUploadActor e2eActor(@Value("${sut.url}") URI sutUrl) {
28+
return new FileUploadActor(sutUrl);
29+
}
730
}

src/test/java/de/turing85/spring/fileupload/actor/FileUploadActor.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,14 @@
88

99
import com.google.common.truth.Truth;
1010
import de.turing85.spring.fileupload.UploadResource;
11-
import io.cucumber.spring.ScenarioScope;
1211
import org.apache.http.client.methods.CloseableHttpResponse;
1312
import org.apache.http.client.methods.HttpPost;
1413
import org.apache.http.entity.ContentType;
1514
import org.apache.http.entity.mime.MultipartEntityBuilder;
1615
import org.apache.http.impl.client.CloseableHttpClient;
1716
import org.apache.http.impl.client.HttpClients;
18-
import org.springframework.beans.factory.annotation.Value;
1917
import org.springframework.http.HttpStatus;
20-
import org.springframework.stereotype.Component;
2118

22-
@Component
23-
@ScenarioScope
2419
public class FileUploadActor {
2520
private static final Random RANDOM = new Random();
2621
private static final int EXPECTED_SIZE_NOT_SET = -1;
@@ -32,7 +27,7 @@ public class FileUploadActor {
3227
private CloseableHttpClient client;
3328
private CloseableHttpResponse response;
3429

35-
public FileUploadActor(@Value("${sut.url}") URI sutUrl) {
30+
public FileUploadActor(URI sutUrl) {
3631
this.sutUrl = sutUrl;
3732
}
3833

0 commit comments

Comments
 (0)