Интеграционное тестирование в 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() {
    // запускаем код, 
    // использующий тестовую схему и тестовые данные
}


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


Комментарии

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

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

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

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