sql >> Database >  >> RDS >> PostgreSQL

Ingesloten Postgres voor lente-opstarttests

Ik ben de auteur van de embedded-database-spring-test-bibliotheek die werd genoemd door @MartinVolejnik. Ik denk dat de bibliotheek aan al je behoeften moet voldoen (PostgreSQL + Spring Boot + Flyway + integratietesten). Het spijt me echt dat je problemen hebt, dus ik heb een eenvoudige demo-app gemaakt die het gebruik van de bibliotheek samen met het Spring Boot-framework demonstreert. Hieronder heb ik een aantal basisstappen samengevat die je moet doen.

Maven-configuratie

Voeg de volgende maven-afhankelijkheid toe:

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

Flyway-configuratie

Voeg de volgende eigenschap toe aan uw applicatieconfiguratie:

# 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

Zorg er verder voor dat u org.flywaydb.test.junit.FlywayTestExecutionListener niet gebruikt . Omdat de bibliotheek zijn eigen testuitvoeringslistener heeft die de database-initialisatie kan optimaliseren en deze optimalisatie heeft geen effect als de FlywayTestExecutionListener wordt toegepast.

Voorbeeld

Een voorbeeld van een testklasse die het gebruik van de embedded database demonstreert:

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


  1. Identiteit verwijderen uit een kolom in een tabel

  2. Hoe een gezouten wachtwoord uit de database en auth-gebruiker intrekken?

  3. IDENTITY() vs IDENTITY() in SQL Server:wat is het verschil?

  4. Gegevens invoegen via een functie met tabelwaarde in SQL Server