Что такое тест-контейнеры и почему вас это должно волновать?
Что такое тест-контейнеры и почему вас это должно волновать?

Тестовые контейнеры уменьшают сложность настройки и демонтажа тестовых сред, упрощая тестирование и обеспечивая более уверенную и надежную разработку.

Переведено с 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 Приложение запускается в готовом виде.

На Яве:

Язык кода:javascript
копировать
GenericContainer redis = new GenericContainer("redis:5.0.3-alpine")
    .withExposedPorts(379);
redis.start()

Сейчас в Go:

Язык кода:javascript
копировать
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 Cloud

В дополнение к этим широко известным библиотекам с открытым исходным кодом, Testcontainers Также доступен продукт, который позволяет легко выгружать эти контейнеры в облако без необходимости Testcontainers Внесите любые изменения в код:Testcontainers Cloud。проходитьиспользовать Testcontainers Cloud вы можете значительно снизить нагрузку на свой локальный компьютер, высвободив ресурсы для выполнения других задач, одновременно выполняя сложные ресурсоемкие тесты.

Такой подход ускоряет рабочий процесс разработки и обеспечивает архитектурное соответствие вашей тестовой среды необходимой среде выполнения Docker (например, x86), поскольку контейнеры выполняются в согласованной и масштабируемой облачной среде. Независимо от того, имеете ли вы дело с большими рабочими нагрузками или просто хотите оптимизировать процесс тестирования, Testcontainers Cloud обеспечивает бесшовную интеграцию, которая повышает производительность и надежность, позволяя вам больше сосредоточиться на кодировании, а не на управлении локальными ресурсами.

Подвести итог

Testcontainers — это универсальный и мощный инструмент, который меняет подход людей к интеграции тестов местных инноваций. Курс предоставляет простой в использовании интерфейс для запуска программы, адаптированной к конкретным потребностям тестирования. Docker Контейнеры, доступ к которым можно получить напрямую, зная используемый язык программирования, Testcontainers. Устранены общие проблемы, связанные с управлением тестовыми средами.

С помощью упаковки лучше всего Модуль практики, автоматический сбор, чтобы поддерживать чистоту вашей системы и удаление контейнера, чтобы Testcontainers Cloud возможностей, этот подход обеспечивает комплексное решение для поддержания последовательности, надежности и эффективности в существующем процессе тестирования.

Независимо от того, являетесь ли вы разработчиком, стремящимся оптимизировать локальный рабочий процесс, или командой, стремящейся масштабировать тестирование в облаке, Testcontainers предоставляет вам инструменты, необходимые для обеспечения бесперебойной работы вашего кода в различных средах. Применяя тестконтейнеры, вы не только улучшаете качество своих тестов, но и открываете путь к более эффективному и уверенному циклу разработки.

Не пропустите нашу All Things Open 2024 Встреча:сделай свой собственный модуль Testcontainers, весело и выгодно!

Узнать больше

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose