Интеграционное тестирование в Spring: аннотации Spring Testing, @Sql, @SqlConfig, @SqlMergeMode, @SqlGroup
@Sql
@Sql используется для аннотирования тестового класса или метода тестирования для настройки сценариев SQL, которые будут запускаться в данной базе данных во время интеграционных тестов. В следующем примере показано, как его использовать:
@Test
@Sql({"/test-schema.sql", "/test-user-data.sql"}) // Запустить два сценария для этого теста.
void userTest() {
// запускаем код,
// основанный на тестовой схеме и тестовых данных
}
@SqlConfig
@SqlConfig определяет метаданные, которые используются для определения того, как анализировать и запускать сценарии SQL, настроенные с помощью аннотации @Sql. В следующем примере показано, как его использовать:
@Test
@Sql(
scripts = "/test-user-data.sql",
config = @SqlConfig(commentPrefix = "`", separator = "@@") // Задайть префикс комментария и разделитель в сценариях SQL.
)
void userTest() {
// запускаем код,
// основанный на тестовых данных
}
@SqlMergeMode
@SqlMergeMode используется для аннотирования тестового класса или тестового метода, чтобы настроить, объединяются ли объявления @Sql уровня метода с объявлениями @Sql уровня класса. Если @SqlMergeMode не объявлен в тестовом классе или тестовом методе, по умолчанию будет использоваться режим слияния OVERRIDE. В режиме OVERRIDE объявления @Sql на уровне метода будут эффективно переопределять объявления @Sql на уровне класса.
Обратите внимание, что объявление @SqlMergeMode на уровне метода переопределяет объявление на уровне класса.
В следующем примере показано, как использовать @SqlMergeMode на уровне класса.
@SpringJUnitConfig(TestConfig.class)
@Sql("/test-schema.sql")
@SqlMergeMode(MERGE) // Установите режим слияния @Sql на MERGE для всех тестовых методов в классе.
class UserTests {
@Test
@Sql("/user-test-data-001.sql")
void standardUserProfile() {
// запускаем код,
// основанный на наборе тестовых данных 001
}
}
В следующем примере показано, как использовать @SqlMergeMode на уровне метода.
@SpringJUnitConfig(TestConfig.class)
@Sql("/test-schema.sql")
class UserTests {
@Test
@Sql("/user-test-data-001.sql")
@SqlMergeMode(MERGE) // Установить режим слияния @Sql на MERGE для определенного метода тестирования.
void standardUserProfile() {
// запускаем код,
// основанный на наборе тестовых данных 001
}
}
@SqlGroup
@SqlGroup - это аннотация контейнера, которая объединяет несколько аннотаций @Sql. Вы можете использовать @SqlGroup изначально для объявления нескольких вложенных аннотаций @Sql, или вы можете использовать его в сочетании с поддержкой Java 8 для повторяемых аннотаций, где @Sql может быть объявлен несколько раз в одном классе или методе, неявно генерируя эту аннотацию контейнера. В следующем примере показано, как объявить группу SQL:
@Test
@SqlGroup({ // Объявить группу сценариев SQL.
@Sql(scripts = "/test-schema.sql", config = @SqlConfig(commentPrefix = "`")),
@Sql("/test-user-data.sql")
)}
void userTest() {
// запускаем код,
// использующий тестовую схему и тестовые данные
}
Читайте также:
- Интеграционное тестирование в Spring: аннотации Spring Testing, @DirtiesContext
- Интеграционное тестирование в Spring: аннотации Spring Testing, @Commit, @Rollback
- Интеграционное тестирование в Spring: аннотации Spring Testing, @ActiveProfiles, @TestPropertySource, @DynamicPropertySource
Комментарии
Отправить комментарий