or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

container-configuration.mdindex.mdjdbc-connectivity.mdr2dbc-connectivity.md
tile.json

tessl/maven-org-testcontainers--oracle-xe

Testcontainers module for Oracle XE database - provides lightweight, throwaway instances of Oracle XE database for integration testing

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.testcontainers/oracle-xe@1.21.x

To install, run

npx @tessl/cli install tessl/maven-org-testcontainers--oracle-xe@1.21.0

index.mddocs/

Oracle XE Testcontainers

Oracle 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.

Package Information

  • Package Name: org.testcontainers:oracle-xe
  • Package Type: Maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>oracle-xe</artifactId>
      <version>1.21.3</version>
    </dependency>

Core Imports

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;

Basic Usage

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));
        }
    }
}

Architecture

Oracle XE Testcontainers is built around several key components:

  • OracleContainer: Main container class extending JdbcDatabaseContainer with Oracle-specific configuration
  • Connection Modes: Supports both application user connections (to PDB) and SID-based connections (to CDB)
  • Container Lifecycle: Automatic Docker container management with health checks and initialization scripts
  • Multi-Protocol Support: Both JDBC and R2DBC connectivity through dedicated wrappers
  • SPI Integration: Automatic container discovery via Java Service Provider Interface

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.

Capabilities

Container Configuration

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();

Container Configuration

JDBC Connectivity

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;

JDBC Connectivity

R2DBC Connectivity

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);

R2DBC Connectivity

Types

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";
}