Я хочу протестировать свой код с Java-объектом "GenericContainer", но у меня есть следующее исключение:
com.mongodb.MongoSocketOpenException: исключение, открывающее сокет в com.mongodb.internal.connection.SocketStream.open (SocketStream.java:70) в com.mongodb.internal.connection.InternalStreamConnection.open (InternalStreamConnection.java:128) в com.mongodb.internal.connection.DefaultServerMonitor $ ServerMonitorRunnable.run1.jpg: DefaultServer) в java.base / java.lang.Thread.run (Thread.java:834) Вызывается: java.net.ConnectException: отказ в соединении (соединение отклонено) в java.base / java.net.PlainSocketImpl.socketConnect (собственный метод) в java.base / java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:399) в java.base / java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:242) в java.baseconnect (AbstractPlainSocketImpl.java:224) в java.base / java.net.SocksSocketImpl.connect (SocksSocketImpl.java:403) в java.base / java.net.Socket.connect (Socket.java:591) в com.mongodb.internal.connection.SocketStreamHelper.initialize (SocketStreamHelper.java:64) в com.mongodb.internal.connection.SocketStream.initializeSocket (SocketStream.java:79) на com.mongodb.internal.connection.SocketStream.open (SocketStream.java:65) ... 3 пропущенных общих кадра
Мой код:
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.ServerAddress;
import java.time.Duration;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
@Slf4j
public abstract class AbstractContainerBaseTest {
protected static final String MONGO_DB_NAME = "db_name";
private final int port = 27017;
private final GenericContainer mongo = new GenericContainer<>("mongo:4.0.8").withExposedPorts(port).withStartupTimeout(Duration.ofSeconds(1180L));
protected MongoClient mongoClient;
protected void init() {
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
int maxConnectionIdleTime = 60000;
builder.maxConnectionIdleTime(maxConnectionIdleTime);
mongo.start();
mongo.waitingFor(Wait.forListeningPort()
.withStartupTimeout(Duration.ofSeconds(180L)));
ServerAddress serverAddress = new ServerAddress(mongo.getContainerIpAddress(), mongo.getMappedPort(port));
mongoClient = new MongoClient(serverAddress, builder.build());
}
@AfterEach
protected void close() {
mongo.stop();
}
}
И зависимость GenericContainer от maven:
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>1.11.3</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
</exclusion>
</exclusions>
</dependency>
Кто-то может мне помочь с этим?
Спасибо, advence.