Тестовые контейнеры уменьшают сложность настройки и демонтажа тестовых сред, упрощая тестирование и обеспечивая более уверенную и надежную разработку.
Переведено с What Is Testcontainers, and Why Should You Care?,Кевин Виттек.
В современной разработке программного обеспечения с распределенными системами и Микросервисная архитектура Учитывая продолжающуюся тенденцию создания огромных интерфейсов интеграции, написание программного обеспечения также означает интеграцию с другими системами. Интеграционное тестирование — отличный инструмент для обеспечения постоянной корректности тестируемой системы и может обеспечить быструю и непрерывную обратную связь о поведении системы в ходе цикла разработки.
Однако интеграционные тесты часто требуют внешних зависимостей, таких как базы данных, брокеры сообщений или веб-серверы, каждый из которых имеет свою собственную конфигурацию и особенности для правильной работы. Традиционно управление этими зависимостями было громоздким, склонным к несогласованности и трудным для репликации на разных машинах.
Исторически это создало интеграционным тестам плохую репутацию из-за их дороговизны в написании и сопровождении. Вам придется либо настраивать среду кропотливым ручным способом, следуя потенциально устаревшей документации (и в конечном итоге получить слегка неработоспособную среду), либо использовать централизованно обслуживаемую общую тестовую среду, что часто приводит к заражению тестов.
Это Testcontainers использования. мои коллеги Oleg Šelajev будет внутри All Things Open 2024 Выше есть " сделай свой собственный модуль Testcontainers, весело и выгодно!”продемонстрировать это в речи под названием。
Testcontainers Библиотека с открытым исходным кодом, используемая для предоставления одноразовых облегченных баз данных, брокеров сообщений, Браузер или почти Docker Экземпляр всего, что работает в контейнере. используя Docker Запускайте легкие изолированные экземпляры этих сервисов по требованию из вашей базы кода — Testcontainers. Устраняйте проблемы управления средой во время тестирования и разработки.
Testcontainers Разрешить разработчикам использовать Инфраструктура как код (IaC) Методы создания надежных и воспроизводимых сред тестирования и разработки с минимальными усилиями. Он пишет рабочий и тестовый код на знакомом языке и помогает обеспечить тестирование кода на реальных, согласованных сервисах. Такой подход упрощает настройку и демонтаж тестовой среды, а также делает тесты более надежными и простыми в обслуживании. Для разработчиков, Тестконтейнеры — это революционный продукт, который упрощает процесс тестирования и обеспечивает более уверенную и надежную разработку.
Testcontainers Также автоматически убирать он создает все Docker Ресурсы, позволяющие убедиться, что ваша система существует после запуска теста. Этот процесс сбора совместим с используемой вами средой тестирования (например, JUnit), где контейнер автоматически останавливается и удаляется после выполнения теста.
Кроме того, тестконтейнеры зависит от файла с именем Ryuk Выделенный вспомогательный контейнер, который отслеживает и гарантирует, что все ресурсы правильно убираются, даже в ситуациях, когда процесс существованиятеста может привести к сбою или неожиданному завершению. проводить связывает этот процесс сбора с жизненным циклом процесса тестирования и использует Ryuk В качестве монитора Testcontainers Гарантировано, что не останется никаких бесполезных контейнеров, сетей или томов, что сохранит чистоту вашей среды и сведет к минимуму риск исчерпания ресурсов или конфликтов при последующих запусках тестов.
Testcontainers Предоставляет богатый набор модулей, которые инкапсулируют использование лучших контейнеров в контексте тестирования существования. практике, что упрощает интеграцию различных технологий в ваш набор тестов. Эти модули представляют собой конкретные технологии (например, базы данных (например, PostgreSQL、MySQL)、брокер сообщений(Например Kafka、RabbitMQ) даже нравится Selenium Такая зрелая среда приложений для тестирования браузера) индивидуальная предварительная настройка Docker контейнер.
проходитьиспользуйте этимодуль,Развлекательные люди могут воспользоваться проверенной и проверенной Конфигурацией,Эти Конфигурацияпротивтест Надежность на сценеи Эффективность оптимизирована。Testcontainers каталог модулей Предоставляется исчерпывающий список доступных услуг, позволяющий быстро найти и реализовать необходимые вам услуги.
Следующие два минимальных примера демонстрируют Java и Go:какиспользовать Redis Определение зеркала Docker Контейнер, настройте его публичный порт и дождитесь контейнера. Redis Приложение запускается в готовом виде.
На Яве:
GenericContainer redis = new GenericContainer("redis:5.0.3-alpine")
.withExposedPorts(379);
redis.start()
Сейчас в Go:
container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
ContainerRequest: testcontainers.ContainerRequest{
Image: "redis:5.0.3-alpine",
ExposedPorts: []string{"6379/tcp"},
WaitingFor: wait.ForLog("Ready to accept connections"),
},
Started: true,
})
В дополнение к этим широко известным библиотекам с открытым исходным кодом, Testcontainers Также доступен продукт, который позволяет легко выгружать эти контейнеры в облако без необходимости Testcontainers Внесите любые изменения в код:Testcontainers Cloud。проходитьиспользовать Testcontainers Cloud вы можете значительно снизить нагрузку на свой локальный компьютер, высвободив ресурсы для выполнения других задач, одновременно выполняя сложные ресурсоемкие тесты.
Такой подход ускоряет рабочий процесс разработки и обеспечивает архитектурное соответствие вашей тестовой среды необходимой среде выполнения Docker (например, x86), поскольку контейнеры выполняются в согласованной и масштабируемой облачной среде. Независимо от того, имеете ли вы дело с большими рабочими нагрузками или просто хотите оптимизировать процесс тестирования, Testcontainers Cloud обеспечивает бесшовную интеграцию, которая повышает производительность и надежность, позволяя вам больше сосредоточиться на кодировании, а не на управлении локальными ресурсами.
Testcontainers — это универсальный и мощный инструмент, который меняет подход людей к интеграции тестов местных инноваций. Курс предоставляет простой в использовании интерфейс для запуска программы, адаптированной к конкретным потребностям тестирования. Docker Контейнеры, доступ к которым можно получить напрямую, зная используемый язык программирования, Testcontainers. Устранены общие проблемы, связанные с управлением тестовыми средами.
С помощью упаковки лучше всего Модуль практики, автоматический сбор, чтобы поддерживать чистоту вашей системы и удаление контейнера, чтобы Testcontainers Cloud возможностей, этот подход обеспечивает комплексное решение для поддержания последовательности, надежности и эффективности в существующем процессе тестирования.
Независимо от того, являетесь ли вы разработчиком, стремящимся оптимизировать локальный рабочий процесс, или командой, стремящейся масштабировать тестирование в облаке, Testcontainers предоставляет вам инструменты, необходимые для обеспечения бесперебойной работы вашего кода в различных средах. Применяя тестконтейнеры, вы не только улучшаете качество своих тестов, но и открываете путь к более эффективному и уверенному циклу разработки.
Не пропустите нашу All Things Open 2024 Встреча:сделай свой собственный модуль Testcontainers, весело и выгодно!