Pull to refresh
  • by relevance
  • by date
  • by rating

Интеграционные тесты для Java с помощью TestContainers. Меньше безумия, больше порядка, и всё это автоматически

JUG Ru Group corporate blog IT systems testing *Java *Groovy & Grails *Web services testing *
Translation
Tutorial

На Хабре совсем нет информации про TestContainers. На момент написания этой статьи, в поисковой выдаче есть анонсы наших же конференций, и всё. Между тем, в проекте на GitHub у них уже более 700 коммитов, 54 контрибьютора и 5 лет истории. Похоже, все эти пять лет проект тщательно скрывался спецслужбами и НЛО. Настало время выйти из тени на свет.



Чукча — читатель, а не писатель. Поэтому, вместо написания своего текста, я попросил разрешения на перевод соответствующей статьи из блога RebelLabs.


Итак, здесь мы поделимся парой слов о наимоднейшей Java-библиотеке для интеграционного тестирования — TestContainers. Кроме этого, будет немного о том, почему интеграционное тестирование настолько важно для ZeroTurnaround и их требования к интеграционным тестам. И конечно, будет полнофункциональный пример интеграционного теста для Java-агента. Если кто-то никогда в глаза не видел код Java-агента, то сейчас самое время. Добро пожаловать под кат!

Total votes 27: ↑25 and ↓2 +23
Views 27K
Comments 18

Интеграционные тесты баз данных с помощью Spring Boot и Testcontainers

Haulmont corporate blog IT systems testing *Java *
Translation

1. Обзор


С помощью Spring Data JPA можно легко создавать запросы к БД и тестировать их с помощью встроенной базы данных H2.


Но иногда тестирование на реальной базе данных намного более полезно, особенно если мы используем запросы, привязанные к конкретной реализации БД.


В этом руководстве мы покажем, как использовать Testcontainers для интеграционного тестирования со Spring Data JPA и базой данных PostgreSQL.

Читать дальше →
Total votes 17: ↑14 and ↓3 +11
Views 13K
Comments 0

Интеграционное тестирование микросервисов на Scala

Конференции Олега Бунина (Онтико) corporate blog High performance *Scala *Web services testing *Microservices *
Unit-тестирование — это замечательно, но его одного бывает недостаточно. Часто хочется дополнительно убедиться, что запущенное приложение будет работать. На помощь приходит интеграционное тестирование. Оно все чаще применяется для тестирования сервисов, а Docker позволяет удобно управлять тестовым окружением. Но, как всегда, не все так просто, когда микросервисов и зависимостей становится намного больше.

Юрий Бадальянц на РИТ++ рассказал, как в 2ГИС тестируют связку из большого числа сервисов и целого зоопарка технологий. Под катом дополненная и актуализированная под тщательным присмотром спикера версия этого доклада: какие варианты пробовали, к чему пришли, какие проблемы теперь вам не придется решать. Будет про Docker, Testcontainers, а также про Scala.
Total votes 15: ↑13 and ↓2 +11
Views 4.6K
Comments 1

'Hello World' вам в облако

Java *DevOps *
Tutorial

Мир сходит с ума, заталкивая калькулятор для 2+2 в облака. Чем мы хуже? Давайте Hello World затолкаем в три микросервиса, напишем пару-тройку тестов, обеспечим пользователей документацией, нарисуем красивый пайплайн сборки и обеспечим деплой в условный облачный прод при успешном прохождении тестов. Итак, в данной статье будет показан пример того, как может быть построен процесс разработки продукта от спецификации до деплоя в прод. Инетересно? тогда прошу под кат

Total votes 66: ↑65 and ↓1 +64
Views 22K
Comments 47

ClusterJ — работаем с MySQL NDB Cluster из Java

MySQL *Java *
Sandbox

Привет, Хабр! В этой статье я хочу рассмотреть такую библиотеку для Java, как ClusterJ, которая позволяет очень просто работать с движком MySQL NDBCLUSTER из Java кода, которая представляет собой высокоуровневое API, схожее по концепции с JPA и Hibernate.


В рамках статьи создадим простое приложение на SpringBoot, а также сделаем стартер с ClusterJ на борту для удобного использования в приложениях с использованием автоконфигурации. Напишем простые тесты с использованием JUnit5 и TestContainers, которые покажут базовое использование API.
Также расскажу о нескольких недостатках, с которыми пришлось столкнутся в процессе работе с ней.


Кому интересно, добро пожаловать под кат.

Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views 1.1K
Comments 0

Joker 2019: триумф года

JUG Ru Group corporate blog Java *Conferences
Неделю назад, 25-26 октября 2019 года, в Санкт-Петербурге прошла Java-конференция Joker 2019. Что на ней происходило, какие доклады были, что показалось интересным — обо всём этом дальше.


Читать дальше →
Total votes 37: ↑33 and ↓4 +29
Views 9.6K
Comments 9

Как собрать образ Oracle DB для Testcontainers

IT systems testing *Oracle *Programming *Java *Web services testing *
Tutorial

Код должен тестироваться на той СУБД, с которой он будет работать. Testcontainers — это такая библиотека, которая позволяет использовать в юнит тестах практически любую СУБД с той же лёгкостью, что embedded базы данных типа HSQLDB или H2. Был бы только Docker образ



Именно сборке удобного для использования с Testcontainers докер образа посвящена эта статья. У меня при попытке его сделать возникли проблемы, и тут я делюсь своим решением.
Собирать буду образ для Oracle 11, потому он небольшого размера и мне версии 11 хватает. С другими версиями подход примерно тот же.


Для того, чтобы было понятно, как использовать образ, тут также будет код на Java, который демонстрирует применение образа для тестирования Spring Boot приложений. Способ подключения к testcontainers я привёл, наверное, не самый лучший. Но во-первых он демонстрирует как использовать настройки, заданные при создании образа. Во-вторых он простой. И в-третьих он почти не завязан на Spring, его можно воткнуть даже в джава код, в котором нет ничего, кроме public static void main.


Предполагается, что читатель обладает поверхностным знакомством с Docker и Testcontaners, а также хорошо знает Java. Для сборки нужно использовать linux, если собираете под Windows, нужно будет применить msys2 или что-то в этом духе.


Демонстрационный код залит на гитхаб вот сюда https://github.com/poxu/testcontainers-spring-demo Поправленные скрипты для сборки образа можно посмотреть в моём форке Оракловских инструкций https://github.com/poxu/docker-images/tree/master/OracleDatabase/SingleInstance

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 6.3K
Comments 6

Подводные камни тестирования Kafka Streams

JUG Ru Group corporate blog IT systems testing *Java *

Kafka, в отличие от реляционных баз данных, является молодой технологией, и потому инструментарий для автоматического тестирования приложений, созданных на базе этой платформы, был доступен разработчикам с самого начала. Хотя на первый взгляд с этим инструментарием всё обстоит очень хорошо — бери и пиши тесты! — на практике приходится сталкиваться с трудностями, о которых хочу поведать в этом посте.

Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Views 5.2K
Comments 0

Работа с базами данных глазами разработчика

Miro corporate blog IT systems testing *PostgreSQL *Programming *Java *
🔥 Technotext 2020

Когда вы разрабатываете новый функционал с использованием базы данных, цикл разработки обычно включает следующие этапы (но не ограничивается ими):

Написание SQL миграции → написание кода → тестирование → релиз → мониторинг.

В этой статье я хочу поделиться некоторыми практическими советами как можно сократить время этого цикла на каждом из этапов, при этом не снизив качество, а скорее даже повысив его. 

Поскольку мы в компании работаем с PostgreSQL, а серверный код пишем на Java, то примеры будут основаны на этом стеке, хотя большинство идей не зависят от используемой БД и языка программирования.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 9.8K
Comments 17

The Testcontainers’ MongoDB Module and Spring Data MongoDB Reactive in Action

Programming *Java *MongoDB *
Sandbox
Tutorial

1. Introduction


How can I easily test my MongoDB multi-document transaction code without setting up MongoDB on my device? One might argue that they have to set it up first because in order to carry out such a transaction it needs a session which requires a replica set. Thankfully, there is no need to create a 3-node replica set and we can run these transactions only against a single database instance.

Read more →
Rating 0
Views 1.3K
Comments 0

Интеграционное тестирование в SpringBoot с TestContainers-стартером

OTUS corporate blog Programming *Java *
Translation
Перевод статьи подготовлен в преддверии старта курса «Разработчик на Spring Framework».




Одна из причин популярности Spring и Spring Boot — это хорошая поддержка тестирования. Можно писать как юнит-тесты с Mockito без использования функциональности Spring’а, так и интеграционные с инициализацией Spring-контекста.

Для интеграционных тестов может потребоваться взаимодействие с внешними сервисами, такими как реляционные базы данных, NoSQL-базы данных, Kafka и другими. При тестировании удобно разворачивать эти сервисы в Docker-контейнерах.
Читать дальше →
Total votes 6: ↑4 and ↓2 +2
Views 6.7K
Comments 2

Как мы начали социальный Open Source проект Brain-Up по созданию платформы развития слухового восприятия

EPAM corporate blog Open source *Kotlin *Telemedicine Ember.js *
Sandbox

В сентябре 2019 года я стартовала социальный Open Source проект Brain-Up на Kotlin и Ember. Это разработка веб-приложения, которое включает в себя серии интерактивных аудиоупражнений для тренировки способности слышать и понимать речь лучше. Я работаю Java-разработчиком с 2013 и в компании EPAM с 2017 года. Однажды столкнувшись с проблемой восприятия речи у своего ребенка, я поняла, что могу попробовать начать разработку такого продукта, который мог бы помочь людям развивать способность восприятия речи не выходя из дома, за компьютером, через веб-сайт, не прибегая к ежедневной помощи близких, специалистов. Первая версия продукта уже доступна для занятий. В этой статье я расскажу о нашем проекте, какие задачи и как были решены, наши планы и как можно присоединиться к проекту.

«Лучше самая малая помощь, чем самое большое сочувствие»

Владислав Лоранц

Читать далее
Total votes 9: ↑8 and ↓1 +7
Views 2K
Comments 3

Run MongoDB Atlas locally for testing

IT systems testing *Programming *Java *MongoDB *

What happens to your MongoDB replica set when it comes to failures like network partitioning, restarting, reconfiguration of the existing topology, etc.? This question is especially important these days because of the popularity gained by the multi-cloud model where chances of these scenarios are quite realistic.


However, is there a solution, preferably a free one, for testing such cases that would obviate the need of writing manual scripts and poring over the official documentation? As software developers, we would be better off preparing our applications in advance to survive these failures.

Read more →
Rating 0
Views 616
Comments 0

История о PostgreSQL 13, Testcontainers и багах

PostgreSQL *Java *Web services testing *

Привет, Хабр.

Несмотря на то, что на текущем месте работы взаимодействовать с PostgreSQL приходится значительно меньше, я продолжаю поддерживать свою библиотеку pg-index-health. Недавно я зарелизил версию 0.3.1, ключевой особенностью которой стала поддержка PostgreSQL 13.

Эта история началась достаточно давно, ещё в октябре 2020. В процессе мне пришлось отказаться от embedded версии СУБД в тестах, перейти на Testcontainers, столкнуться с ошибкой в PG13 и даже немного пообщаться в переписке с одним из разработчиков Постгреса... Но обо всем по порядку.

Читать далее
Total votes 4: ↑4 and ↓0 +4
Views 2.5K
Comments 0

Обзор модульного и интеграционного тестирования Spring Boot

Java *
Translation
Tutorial

Модульное и интеграционное тестирование - неотъемлемая часть вашей повседневной жизни как разработчика. Однако для новичков Spring Boot написание содержательных тестов для своих приложений оказывается проблемой:

- С чего начать мои усилия по тестированию?

- Как Spring Boot может помочь мне в написании эффективных тестов?

- Какие библиотеки мне использовать?

В этом блоге вы получите обзор того, как модульное и интеграционное тестирование работает со Spring Boot. Кроме того, вы узнаете, на каких функциях и библиотеках Spring следует сосредоточиться в первую очередь. 

Читать далее
Rating 0
Views 7.9K
Comments 1

Как подружить Redis Cluster c Testcontainers?

Programming *Java *Industrial Programming *Web services testing *
В 26-м выпуске NP-полного подкаста я рассказывал, что начал переводить один из своих сервисов из Redis Sentinel на Redis Cluster. На этой неделе я захотел потестировать данный код, и, конечно же, выбрал Testcontainers для этого. К сожалению, Redis Cluster в тестовых контейнерах не завелся из коробки, и мне пришлось вставить несколько костылей. О них и пойдет речь далее.
Читать дальше →
Rating 0
Views 783
Comments 0