es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Testcontainers es una biblioteca de pruebas que permite a los desarrolladores y equipos de QA crear fácilmente contenedores Docker para sus bases de datos. Con Testcontainers Oracle DB, puedes configurar y administrar de manera rápida y sencilla un contenedor Oracle en un entorno controlado para tus pruebas de integración. Esto te permite simular un entorno de base de datos real mientras te aseguras de que tus pruebas se ejecutan de manera confiable y reproducible.

Estoy intentando configurar una prueba de integración utilizando Testcontainers y una base de datos Oracle-xe.
Estoy obteniendo el siguiente error:

Entrada en application.properties: spring.datasource.driver-class-name=org.testcontainers.jdbc.ContainerDatabaseDriver

Driver org.testcontainers.jdbc.ContainerDatabaseDriver afirma que no acepta jdbcUrl, jdbc:oracle:thin:@localhost:55802/xepdb1

Mi extensión de prueba:

public class OracleDBContainerExtension implements AfterAllCallback, BeforeAllCallback {
private OracleContainer container;

@Override
public void beforeAll(ExtensionContext context) {
// gvenzl/oracle-xe:18.4.0-slim
container = new OracleContainer();
container.start();
container.waitingFor(
Wait.forListeningPort().withStartupTimeout(Duration.ofSeconds(180L)));
System.setProperty(“spring.datasource.url”, container.getJdbcUrl());
System.setProperty(“spring.datasource.password”, container.getPassword());
System.setProperty(“spring.datasource.username”, container.getUsername());
}

@Override
public void afterAll(ExtensionContext context) {
container.stop();
}
}

Prueba:

@Testcontainers
@SpringBootTest
@ExtendWith(OracleDBContainerExtension.class)
public class HeroRepositoryTest {
@Autowired
private HeroRepository repositoryUnderTest;

@Test
public void shouldReturnHeroesSuccessfully() {
System.out.println(“junit version: ” + Version.id());
List heroes = repositoryUnderTest.allHeros();
assertThat(heroes).hasSize(1);
repositoryUnderTest.addHero(new Hero(“bb”, “bb”));
Collection heroesAfter = repositoryUnderTest.allHeros();
assertThat(heroesAfter).hasSize(2);
}
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo porque el nombre de la clase del controlador es incorrecto. En lugar de utilizar “org.testcontainers.jdbc.ContainerDatabaseDriver”, utiliza “oracle.jdbc.OracleDriver” como nombre de la clase del controlador en la entrada de las propiedades de la aplicación. Esto debería solucionar el problema y permitirte conectar a la base de datos Oracle-XE utilizando Testcontainers.

Comments are closed.