Spring Boot: автоматически настроенные JDBC, Data JDBC, jOOQ тесты

Автоматически настроенные JDBC тесты

@JdbcTest похож на @DataJpaTest, но предназначен для тестов, которые требуют только DataSource и не используют Spring Data JDBC. По умолчанию он настраивает встроенную базу данных в памяти и JdbcTemplate. Обычные компоненты @Component не загружаются в ApplicationContext.

По умолчанию тесты JDBC являются транзакционными и откатываются в конце каждого теста. Если это не то, что вам нужно, вы можете отключить управление транзакциями для теста или для всего класса следующим образом:

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@JdbcTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
class ExampleNonTransactionalTests {

}

Если вы предпочитаете, чтобы ваш тест выполнялся на реальной базе данных, вы можете использовать аннотацию @AutoConfigureTestDatabase так же, как и для DataJpaTest.

Автоматически настроенные Data JDBC тесты

@DataJdbcTest похож на @JdbcTest, но предназначен для тестов, использующих репозитории Spring Data JDBC. По умолчанию он настраивает встроенную базу данных в памяти, JdbcTemplate и репозитории Spring Data JDBC. Обычные компоненты @Component не загружаются в ApplicationContext.

По умолчанию тесты Data JDBC являются транзакционными и откатываются в конце каждого теста. Если это не то, что вам нужно, вы можете отключить управление транзакциями для теста или для всего класса теста, как показано в примере JDBC выше.

Если вы предпочитаете, чтобы ваш тест выполнялся на реальной базе данных, вы можете использовать аннотацию @AutoConfigureTestDatabase так же, как и для DataJpaTest.

Автоматически настроенные jOOQ тесты

Вы можете использовать @JooqTest аналогично @JdbcTest, но для тестов, связанных с jOOQ. Поскольку jOOQ в значительной степени опирается на схему на основе Java, которая соответствует схеме базы данных, используется существующий источник данных. Если вы хотите заменить его базой данных в памяти, вы можете использовать @AutoConfigureTestDatabase, чтобы переопределить эти настройки. Обычные бины @Component не загружаются в ApplicationContext.

@JooqTest настраивает DSLContext. Обычные компоненты @Component не загружаются в ApplicationContext. В следующем примере показана используемая аннотация @JooqTest:

import org.jooq.DSLContext;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.autoconfigure.jooq.JooqTest;

@JooqTest
class ExampleJooqTests {

    @Autowired
    private DSLContext dslContext;
}

Тесты JOOQ являются транзакционными и по умолчанию откатываются в конце каждого теста. Если это не то, что вы хотите, вы можете отключить управление транзакциями для теста или для всего класса теста, как показано в примере JDBC выше.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки