Skip to content

Commit b909dd3

Browse files
committed
feat: move junit4 integration to org.testcontainers:junit4 module
Previously, testcontainers declared an explicit dependency on JUnit4, and this change decouples Testcontainers from JUnit4. Note: JUnit4 is in maintenance mode, so it does not sound right to force such a dependency. The users who still need to use JUnit4 could use the following: * Add org.testcontainers:junit4 dependency * Add TestcontainersRule as follows: @rule TestcontainersRule<GenericContainer> = new TestcontainersRule(...) Fixes #970
1 parent 63189c8 commit b909dd3

File tree

80 files changed

+382
-467
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+382
-467
lines changed

core/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ configurations.all {
6969
}
7070

7171
dependencies {
72-
api 'junit:junit:4.13.2'
7372
api 'org.slf4j:slf4j-api:1.7.36'
7473
compileOnly 'org.jetbrains:annotations:24.1.0'
7574
testCompileOnly 'org.jetbrains:annotations:24.1.0'
@@ -106,6 +105,8 @@ dependencies {
106105

107106
shaded 'org.zeroturnaround:zt-exec:1.12'
108107

108+
testImplementation project(":junit4")
109+
testImplementation 'junit:junit:4.13.2'
109110
testImplementation('com.google.cloud.tools:jib-core:0.23.0') {
110111
exclude group: 'com.google.guava', module: 'guava'
111112
}

core/src/main/java/org/testcontainers/containers/ComposeContainer.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import lombok.NonNull;
66
import lombok.extern.slf4j.Slf4j;
77
import org.apache.commons.lang3.SystemUtils;
8-
import org.junit.runner.Description;
9-
import org.junit.runners.model.Statement;
108
import org.testcontainers.containers.output.OutputFrame;
119
import org.testcontainers.containers.wait.strategy.Wait;
1210
import org.testcontainers.containers.wait.strategy.WaitStrategy;
@@ -31,7 +29,7 @@
3129
* It uses either Compose V2 contained within the Docker binary, or a containerised version of Compose V2.
3230
*/
3331
@Slf4j
34-
public class ComposeContainer extends FailureDetectingExternalResource implements Startable {
32+
public class ComposeContainer implements Startable {
3533

3634
private final Map<String, Integer> scalingPreferences = new HashMap<>();
3735

@@ -93,32 +91,6 @@ public ComposeContainer(String identifier, List<File> composeFiles) {
9391
this.project = this.composeDelegate.getProject();
9492
}
9593

96-
@Override
97-
@Deprecated
98-
public Statement apply(Statement base, Description description) {
99-
return super.apply(base, description);
100-
}
101-
102-
@Override
103-
@Deprecated
104-
public void starting(Description description) {
105-
start();
106-
}
107-
108-
@Override
109-
@Deprecated
110-
protected void succeeded(Description description) {}
111-
112-
@Override
113-
@Deprecated
114-
protected void failed(Throwable e, Description description) {}
115-
116-
@Override
117-
@Deprecated
118-
public void finished(Description description) {
119-
stop();
120-
}
121-
12294
@Override
12395
public void start() {
12496
synchronized (MUTEX) {

core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import lombok.NonNull;
66
import lombok.extern.slf4j.Slf4j;
77
import org.apache.commons.lang3.SystemUtils;
8-
import org.junit.runner.Description;
9-
import org.junit.runners.model.Statement;
108
import org.testcontainers.containers.output.OutputFrame;
119
import org.testcontainers.containers.wait.strategy.Wait;
1210
import org.testcontainers.containers.wait.strategy.WaitStrategy;
@@ -30,9 +28,7 @@
3028
* Container which launches Docker Compose, for the purposes of launching a defined set of containers.
3129
*/
3230
@Slf4j
33-
public class DockerComposeContainer<SELF extends DockerComposeContainer<SELF>>
34-
extends FailureDetectingExternalResource
35-
implements Startable {
31+
public class DockerComposeContainer<SELF extends DockerComposeContainer<SELF>> implements Startable {
3632

3733
private final Map<String, Integer> scalingPreferences = new HashMap<>();
3834

@@ -99,32 +95,6 @@ public DockerComposeContainer(String identifier, List<File> composeFiles) {
9995
this.project = this.composeDelegate.getProject();
10096
}
10197

102-
@Override
103-
@Deprecated
104-
public Statement apply(Statement base, Description description) {
105-
return super.apply(base, description);
106-
}
107-
108-
@Override
109-
@Deprecated
110-
public void starting(Description description) {
111-
start();
112-
}
113-
114-
@Override
115-
@Deprecated
116-
protected void succeeded(Description description) {}
117-
118-
@Override
119-
@Deprecated
120-
protected void failed(Throwable e, Description description) {}
121-
122-
@Override
123-
@Deprecated
124-
public void finished(Description description) {
125-
stop();
126-
}
127-
12898
@Override
12999
public void start() {
130100
synchronized (MUTEX) {

core/src/main/java/org/testcontainers/containers/FailureDetectingExternalResource.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

core/src/main/java/org/testcontainers/containers/GenericContainer.java

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
import org.apache.commons.lang3.SystemUtils;
3333
import org.jetbrains.annotations.NotNull;
3434
import org.jetbrains.annotations.Nullable;
35-
import org.junit.runner.Description;
36-
import org.junit.runners.model.Statement;
3735
import org.rnorth.ducttape.unreliables.Unreliables;
3836
import org.slf4j.Logger;
3937
import org.testcontainers.DockerClientFactory;
@@ -52,8 +50,6 @@
5250
import org.testcontainers.images.builder.Transferable;
5351
import org.testcontainers.lifecycle.Startable;
5452
import org.testcontainers.lifecycle.Startables;
55-
import org.testcontainers.lifecycle.TestDescription;
56-
import org.testcontainers.lifecycle.TestLifecycleAware;
5753
import org.testcontainers.utility.Base58;
5854
import org.testcontainers.utility.CommandLine;
5955
import org.testcontainers.utility.DockerImageName;
@@ -106,7 +102,6 @@
106102
*/
107103
@Data
108104
public class GenericContainer<SELF extends GenericContainer<SELF>>
109-
extends FailureDetectingExternalResource
110105
implements Container<SELF>, AutoCloseable, WaitStrategyTarget, Startable {
111106

112107
public static final int CONTAINER_RUNNING_TIMEOUT_SEC = 30;
@@ -1053,57 +1048,6 @@ public void addExposedPorts(int... ports) {
10531048
this.containerDef.addExposedTcpPorts(ports);
10541049
}
10551050

1056-
private TestDescription toDescription(Description description) {
1057-
return new TestDescription() {
1058-
@Override
1059-
public String getTestId() {
1060-
return description.getDisplayName();
1061-
}
1062-
1063-
@Override
1064-
public String getFilesystemFriendlyName() {
1065-
return description.getClassName() + "-" + description.getMethodName();
1066-
}
1067-
};
1068-
}
1069-
1070-
@Override
1071-
@Deprecated
1072-
public Statement apply(Statement base, Description description) {
1073-
return super.apply(base, description);
1074-
}
1075-
1076-
@Override
1077-
@Deprecated
1078-
protected void starting(Description description) {
1079-
if (this instanceof TestLifecycleAware) {
1080-
((TestLifecycleAware) this).beforeTest(toDescription(description));
1081-
}
1082-
this.start();
1083-
}
1084-
1085-
@Override
1086-
@Deprecated
1087-
protected void succeeded(Description description) {
1088-
if (this instanceof TestLifecycleAware) {
1089-
((TestLifecycleAware) this).afterTest(toDescription(description), Optional.empty());
1090-
}
1091-
}
1092-
1093-
@Override
1094-
@Deprecated
1095-
protected void failed(Throwable e, Description description) {
1096-
if (this instanceof TestLifecycleAware) {
1097-
((TestLifecycleAware) this).afterTest(toDescription(description), Optional.of(e));
1098-
}
1099-
}
1100-
1101-
@Override
1102-
@Deprecated
1103-
protected void finished(Description description) {
1104-
this.stop();
1105-
}
1106-
11071051
/**
11081052
* {@inheritDoc}
11091053
*/

core/src/main/java/org/testcontainers/containers/Network.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import lombok.Builder;
55
import lombok.Getter;
66
import lombok.Singular;
7-
import org.junit.rules.ExternalResource;
8-
import org.junit.rules.TestRule;
97
import org.testcontainers.DockerClientFactory;
108
import org.testcontainers.utility.ResourceReaper;
119

@@ -17,7 +15,7 @@
1715
import java.util.concurrent.atomic.AtomicBoolean;
1816
import java.util.function.Consumer;
1917

20-
public interface Network extends AutoCloseable, TestRule {
18+
public interface Network extends AutoCloseable {
2119
Network SHARED = new NetworkImpl(false, null, Collections.emptySet(), null) {
2220
@Override
2321
public void close() {
@@ -40,7 +38,7 @@ static NetworkImpl.NetworkImplBuilder builder() {
4038

4139
@Builder
4240
@Getter
43-
class NetworkImpl extends ExternalResource implements Network {
41+
class NetworkImpl implements Network {
4442

4543
private final String name = UUID.randomUUID().toString();
4644

@@ -100,11 +98,6 @@ private String create() {
10098
return createNetworkCmd.exec().getId();
10199
}
102100

103-
@Override
104-
protected void after() {
105-
close();
106-
}
107-
108101
@Override
109102
public synchronized void close() {
110103
if (initialized.getAndSet(false)) {

core/src/test/java/org/testcontainers/containers/ExposedHostTest.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import org.junit.AfterClass;
88
import org.junit.BeforeClass;
99
import org.junit.Test;
10-
import org.junit.runner.Description;
11-
import org.junit.runners.model.Statement;
1210
import org.testcontainers.DockerClientFactory;
1311
import org.testcontainers.TestImages;
1412
import org.testcontainers.Testcontainers;
@@ -189,11 +187,6 @@ public String getId() {
189187

190188
@Override
191189
public void close() {}
192-
193-
@Override
194-
public Statement apply(Statement base, Description description) {
195-
return null;
196-
}
197190
};
198191

199192
List<com.github.dockerjava.api.model.Network> networks = DockerClientFactory

core/src/test/java/org/testcontainers/containers/FailureDetectingExternalResourceTest.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

core/src/test/java/org/testcontainers/junit/ComposeWaitStrategyTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import org.junit.After;
44
import org.junit.Before;
55
import org.junit.Test;
6-
import org.junit.runner.Description;
76
import org.mockito.Mockito;
87
import org.testcontainers.containers.ComposeContainer;
98
import org.testcontainers.containers.wait.strategy.Wait;
@@ -37,7 +36,7 @@ public void testWaitOnListeningPort() {
3736
environment.withExposedService("redis-1", REDIS_PORT, Wait.forListeningPort());
3837

3938
try {
40-
environment.starting(Description.createTestDescription(Object.class, "name"));
39+
environment.start();
4140
} catch (RuntimeException e) {
4241
fail("Docker compose should start after waiting for listening port with failed with: " + e);
4342
}
@@ -51,7 +50,7 @@ public void testWaitOnMultipleStrategiesPassing() {
5150
.withTailChildContainers(true);
5251

5352
try {
54-
environment.starting(Description.createTestDescription(Object.class, "name"));
53+
environment.start();
5554
} catch (RuntimeException e) {
5655
fail("Docker compose should start after waiting for listening port with failed with: " + e);
5756
}
@@ -64,7 +63,7 @@ public void testWaitingFails() {
6463
REDIS_PORT,
6564
Wait.forHttp("/test").withStartupTimeout(Duration.ofSeconds(10))
6665
);
67-
assertThat(catchThrowable(() -> environment.starting(Description.createTestDescription(Object.class, "name"))))
66+
assertThat(catchThrowable(() -> environment.start()))
6867
.as("waiting on an invalid http path times out")
6968
.isInstanceOf(RuntimeException.class);
7069
}
@@ -83,7 +82,7 @@ public void testWaitOnOneOfMultipleStrategiesFailing() {
8382
)
8483
.withTailChildContainers(true);
8584

86-
assertThat(catchThrowable(() -> environment.starting(Description.createTestDescription(Object.class, "name"))))
85+
assertThat(catchThrowable(() -> environment.start()))
8786
.as("waiting on one failing strategy to time out")
8887
.isInstanceOf(RuntimeException.class);
8988
}

0 commit comments

Comments
 (0)