@IfProfileValue против @ActiveProfiles в контексте теста Spring

Я имею в виду тест Spring и следующие аннотации:

  • @IfProfileValue
  • @ActiveProfiles

Я сейчас пользуюсь @ActiveProfiles в моем заявлении, и я недавно обнаружил существование @IfProfileValue аннотация, которая, кажется, обеспечивает аналогичную функциональность.

Может ли кто-нибудь объяснить, в чем различия между этими двумя аннотациями, возможно, предоставив примеры использования, которые будут контрастировать между ними?

1 ответ

Решение

Как указано в Javadoc, @IfProfileValue используется, чтобы указать, что тестирование включено для определенного профиля тестирования или среды.

В то время как, @ActiveProfiles используется для объявления, какие профили определения активных компонентов должны использоваться при загрузке ApplicationContext для тестовых классов.

Другими словами, вы используете @IfProfileValue контролировать, будет ли тестовый класс или метод теста будет выполнен или пропущен, и вы используете @ActiveProfiles установить активные профили определения бина, которые будут использоваться для загрузки ApplicationContext для вашего теста.

Обратите внимание, что @IfProfileValue был представлен в Spring Framework 2.0 задолго до того, как появилось понятие профилей определения бина, и @ActiveProfiles Впервые был представлен в Spring Framework 3.1.

Обе аннотации содержат термин " профиль", но на самом деле они совершенно не связаны!

Термин профиль, возможно, вводит в заблуждение при рассмотрении семантики для @IfProfileValue, Ключ должен думать о группах тестирования (таких как в TestNG) вместо профилей. Смотрите примеры в JavaDoc для @IfProfileValue. Вот выдержка:

@IfProfileValue(name = "test-groups", values = { "unit-tests", "integration-tests" })
public void testWhichRunsForUnitOrIntegrationTestGroups() {
    // ...
}

Приведенный выше тестовый метод будет выполнен, если вы установите test-groups системное свойство (например, -Dtest-groups=unit-tests или же -Dtest-groups=integration-tests).

В разделе " Конфигурация контекста с профилями среды " главы " Тестирование" в справочном руководстве Spring приведены подробные примеры использования. @ActiveProfiles,

С Уважением,

Сэм (автор Spring TestContext Framework)

Другие вопросы по тегам