Testcontainers module for Oracle XE database - provides lightweight, throwaway instances of Oracle XE database for integration testing
npx @tessl/cli install tessl/maven-org-testcontainers--oracle-xe@1.21.0Oracle XE Testcontainers provides lightweight, throwaway instances of Oracle XE database for integration testing. Built on the Testcontainers framework, it automatically manages Docker containers with Oracle XE database, supporting both JDBC and R2DBC connectivity with pre-configured defaults optimized for testing workflows.
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>oracle-xe</artifactId>
<version>1.21.3</version>
</dependency>import org.testcontainers.containers.OracleContainer;For R2DBC support:
import org.testcontainers.containers.OracleR2DBCDatabaseContainer;
import org.testcontainers.containers.OracleR2DBCDatabaseContainerProvider;For SPI-based container creation:
import org.testcontainers.containers.OracleContainerProvider;import org.testcontainers.containers.OracleContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
@Testcontainers
public class OracleIntegrationTest {
@Container
static OracleContainer oracle = new OracleContainer("gvenzl/oracle-xe:18.4.0-slim")
.withDatabaseName("testdb")
.withUsername("testuser")
.withPassword("testpass");
@Test
void testOracleConnection() throws Exception {
String jdbcUrl = oracle.getJdbcUrl();
String username = oracle.getUsername();
String password = oracle.getPassword();
try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 1 FROM DUAL");
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
}
}
}Oracle XE Testcontainers is built around several key components:
The container provides pre-configured Oracle XE defaults including database name (xepdb1), SID (xe), ports (1521, 8080), and test user credentials, while supporting extensive customization for specific testing requirements.
Core container setup including image selection, database configuration, user credentials, and connection modes. Provides both default configurations for quick setup and extensive customization options for complex testing scenarios.
public OracleContainer(String dockerImageName);
public OracleContainer(DockerImageName dockerImageName);
public OracleContainer(Future<String> dockerImageName);
public OracleContainer withDatabaseName(String databaseName);
public OracleContainer withUsername(String username);
public OracleContainer withPassword(String password);
public OracleContainer usingSid();Standard JDBC database connectivity with Oracle-specific connection URLs, driver management, and database operations. Provides seamless integration with JUnit testing frameworks and connection pooling libraries.
public String getJdbcUrl();
public String getDriverClassName();
public String getUsername();
public String getPassword();
public String getTestQueryString();
public Connection createConnection(String queryString) throws SQLException, NoDriverFoundException;
public Driver getJdbcDriverInstance() throws NoDriverFoundException;Reactive database connectivity using R2DBC for non-blocking database operations. Provides factory methods and configuration options for reactive programming patterns with Oracle databases.
public static ConnectionFactoryOptions getOptions(OracleContainer container);
public ConnectionFactoryOptions configure(ConnectionFactoryOptions options);
public R2DBCDatabaseContainer createContainer(ConnectionFactoryOptions options);public class OracleContainer extends JdbcDatabaseContainer<OracleContainer> {
public static final String NAME = "oracle";
static final String DEFAULT_TAG = "18.4.0-slim";
static final String IMAGE = "gvenzl/oracle-xe";
static final int ORACLE_PORT = 1521;
static final String DEFAULT_DATABASE_NAME = "xepdb1";
static final String DEFAULT_SID = "xe";
static final String APP_USER = "test";
static final String APP_USER_PASSWORD = "test";
}
public class OracleContainerProvider extends JdbcDatabaseContainerProvider {
// SPI implementation for JDBC container creation
}
public class OracleR2DBCDatabaseContainer implements R2DBCDatabaseContainer {
// R2DBC wrapper implementation
}
public class OracleR2DBCDatabaseContainerProvider implements R2DBCDatabaseContainerProvider {
static final String DRIVER = "oracle";
}