@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)