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 выше.
Читайте также:
- Spring Boot: автоматически настроенные Spring MVC тесты
- Spring Boot: автоматически настроенные Data JPA тесты
- Spring Boot: автоматически настроенные тесты
Комментарии
Отправить комментарий