sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres integrado para pruebas Spring Boot

Soy el autor de la biblioteca de prueba de resorte de base de datos integrada que mencionó @MartinVolejnik. Creo que la biblioteca debería satisfacer todas sus necesidades (PostgreSQL + Spring Boot + Flyway + pruebas de integración). Lamento mucho que esté teniendo problemas, así que creé una aplicación de demostración simple que demuestra el uso de la biblioteca junto con el marco Spring Boot. A continuación, resumí algunos pasos básicos que debe seguir.

Configuración Maven

Agregue la siguiente dependencia experta:

<dependency>
    <groupId>io.zonky.test</groupId>
    <artifactId>embedded-database-spring-test</artifactId>
    <version>2.0.1</version>
    <scope>test</scope>
</dependency>

Configuración de la ruta migratoria

Agregue la siguiente propiedad a la configuración de su aplicación:

# Sets the schemas managed by Flyway -> change the xxx value to the name of your schema
# flyway.schemas=xxx // for spring boot 1.x.x
spring.flyway.schemas=xxx // for spring boot 2.x.x

Además, asegúrese de no utilizar org.flywaydb.test.junit.FlywayTestExecutionListener . Debido a que la biblioteca tiene su propio oyente de ejecución de prueba que puede optimizar la inicialización de la base de datos y esta optimización no tiene efecto si FlywayTestExecutionListener se aplica.

Ejemplo

Un ejemplo de clase de prueba que demuestra el uso de la base de datos incrustada:

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureEmbeddedDatabase
public class SpringDataJpaAnnotationTest {

    @Autowired
    private PersonRepository personRepository;

    @Test
    public void testEmbeddedDatabase() {
        Optional<Person> personOptional = personRepository.findById(1L);

        assertThat(personOptional).hasValueSatisfying(person -> {
            assertThat(person.getId()).isNotNull();
            assertThat(person.getFirstName()).isEqualTo("Dave");
            assertThat(person.getLastName()).isEqualTo("Syer");
        });
    }
}