Сообщения

Показаны сообщения с ярлыком "тестирование в Spring"

Интеграционное тестирование в Spring: аннотации Spring Testing, @ActiveProfiles, @TestPropertySource, @DynamicPropertySource

Изображение
@ActiveProfiles @ActiveProfiles - это аннотация уровня класса, которая используется для объявления профилей определения bean-компонентов, которые должны быть активными при загрузке ApplicationContext для интеграционного теста. В следующем примере показано, что dev профиль должен быть активен: @ContextConfiguration @ActiveProfiles("dev") class DeveloperTests { // тело класса... } В следующем примере показано, что должны быть активны и dev профиль, и integration профиль: @ContextConfiguration @ActiveProfiles({"dev", "integration"}) class DeveloperIntegrationTests { // тело класса... } @ActiveProfiles обеспечивает поддержку наследования профилей определения активных компонентов, объявленных суперклассами по умолчанию. Вы также можете разрешить активные профили определения bean-компонентов программно, реализовав настраиваемый ActiveProfilesResolver и зарегистрировав его с помощью атрибута resolver у @ActiveProfiles. @TestPropertySour...

Интеграционное тестирование в Spring: аннотации Spring Testing, @WebAppConfiguration, @ContextHierarchy

Изображение
@WebAppConfiguration @WebAppConfiguration - это аннотация уровня класса, которую можно использовать для объявления, что ApplicationContext, загруженный для интеграционного теста, должен быть WebApplicationContext. Простое присутствие @WebAppConfiguration в тестовом классе гарантирует, что WebApplicationContext будет загружен для теста с использованием значения по умолчанию "file:src/main/webapp" для пути к корню веб-приложения (то есть базовый путь ресурса). Базовый путь ресурса используется негласно для создания MockServletContext, который служит в качестве ServletContext для WebApplicationContext теста. В следующем примере показано, как использовать аннотацию @WebAppConfiguration: @ContextConfiguration @WebAppConfiguration class WebAppTests { // тело класса... } Чтобы переопределить значение по умолчанию, вы можете указать другой базовый путь ресурса, используя неявно атрибут значения. Поддерживаются как префиксы ресурса classpath:, так и file:. Если префикс р...

Интеграционное тестирование в Spring: аннотации Spring Testing

Изображение
Spring Framework предоставляет набор специфичных для Spring аннотаций, которые вы можете использовать в своих модульных и интеграционных тестах вместе со структурой TestContext. Аннотации тестирования Spring включают следующее: @BootstrapWith @ContextConfiguration @WebAppConfiguration @ContextHierarchy @ActiveProfiles @TestPropertySource @DynamicPropertySource @DirtiesContext @TestExecutionListeners @Commit @Rollback @BeforeTransaction @AfterTransaction @Sql @SqlConfig @SqlMergeMode @SqlGroup @BootstrapWith @BootstrapWith - это аннотация на уровне класса, которую вы можете использовать для настройки способа загрузки Spring TestContext Framework. В частности, вы можете использовать @BootstrapWith, чтобы указать собственный TestContextBootstrapper. @ContextConfiguration @ContextConfiguration определяет метаданные уровня класса, которые используются для определения того, как загружать и настраивать ApplicationContext для интеграционных тестов. В частности, @Context...

Интеграционное тестирование в Spring: поддержка тестирования JDBC

Изображение
Пакет org.springframework.test.jdbc содержит JdbcTestUtils, который представляет собой набор служебных функций, связанных с JDBC, предназначенных для упрощения стандартных сценариев тестирования базы данных. В частности, JdbcTestUtils предоставляет следующие статические служебные методы. countRowsInTable(..) : подсчитывает количество строк в данной таблице. countRowsInTableWhere(..) : подсчитывает количество строк в данной таблице с использованием предоставленного предложения WHERE. deleteFromTables(..) : удаляет все строки из указанных таблиц. deleteFromTableWhere(..) : удаляет строки из данной таблицы с помощью предоставленного предложения WHERE. dropTables(..) : отбрасывает указанные таблицы. AbstractTransactionalJUnit4SpringContextTests и AbstractTransactionalTestNGSpringContextTests предоставляют удобные методы, которые делегируют полномочия вышеупомянутым методам в JdbcTestUtils. Модуль spring-jdbc обеспечивает поддержку для настройки и запуска встроенной базы данных, ко...

Интеграционное тестирование в Spring: цели, вспомогательные классы

Изображение
Цели интеграционного тестирования Поддержка интеграционного тестирования Spring преследует следующие основные цели: Управлять кешированием контейнеров Spring IoC между тестами. Обеспечить внедрение зависимостей экземпляров тестовых приспособлений (fixtures). Обеспечить управление транзакциями, соответствующее интеграционному тестированию. Предоставлять специфичные для Spring базовые классы, которые помогают разработчикам в написании интеграционных тестов. Управление контекстом и кэширование Spring TestContext Framework обеспечивает последовательную загрузку экземпляров Spring ApplicationContext и WebApplicationContext, а также кэширование этих контекстов. Поддержка кэширования загруженных контекстов важна, потому что время запуска может стать проблемой - не из-за накладных расходов самого Spring, а потому, что объекты, экземпляры которых создаются контейнером Spring, требуют времени для создания экземпляров. Например, для проекта с 50–100 файлами сопоставления Hibernate может ...

Интеграционное тестирование в Spring

Изображение
Важно иметь возможность выполнить некоторое интеграционное тестирование без необходимости развертывания на вашем сервере приложений или подключения к другой корпоративной инфраструктуре. Это позволит вам протестировать такие вещи, как: Правильная привязка контекстов контейнера Spring IoC. Доступ к данным с помощью JDBC или ORM. Это может включать такие вещи, как правильность операторов SQL, запросы Hibernate, сопоставления сущностей JPA и т. д. Spring Framework обеспечивает первоклассную поддержку для интеграционного тестирования в модуле spring-test. Имя фактического файла JAR может включать версию выпуска, а также может быть в длинной форме org.springframework.test, в зависимости от того, откуда вы его получили. Эта библиотека включает пакет org.springframework.test, который содержит ценные классы для интеграционного тестирования с контейнером Spring. Это тестирование не зависит от сервера приложений или другой среды развертывания. Такие тесты выполняются медленнее, чем модульны...

Юнит-тестирование в Spring: mock объекты

Изображение
Spring включает ряд пакетов, посвященных мокам: Environment JNDI Servlet API Spring Web Reactive Environment Пакет org.springframework.mock.env содержит фиктивные (mock) реализации абстракций Environment и PropertySource. MockEnvironment и MockPropertySource полезны для разработки внеконтейнерных тестов для кода, который зависит от свойств среды. JNDI Пакет org.springframework.mock.jndi содержит частичную реализацию JNDI SPI, которую вы можете использовать для настройки простой среды JNDI для наборов тестов или автономных приложений. Если, например, экземпляры JDBC DataSource привязаны к тем же именам JNDI в тестовом коде, что и в контейнере Java EE, вы можете повторно использовать как код приложения, так и конфигурацию в сценариях тестирования без изменений. Поддержка фиктивного (mock) JNDI в пакете org.springframework.mock.jndi официально устарела в Spring Framework 5.2 в пользу полных решений от третьих сторон, таких как Simple-JNDI. Servlet API Пакет org.springframewor...