Перейти к основному содержимому

· 3 мин. чтения

1. Весна и Ява

>> Необязательный.stream() [ blog.frankel.ch ]

Потоковые необязательные значения — упрощение необязательных конвейеров путем преобразования их в потоки!

>> Стратегии инициализации с тестовыми контейнерами для интеграционных тестов [ rieckpil.de ]

Настройка контейнеров с помощью TestContainers — выполнение команд, монтирование файлов, сценарии инициализации и предварительное заполнение баз данных.

>> Более быстрое декодирование набора символов [ cl4es.github.io ]

· 9 мин. чтения

1. Обзор

В этом руководстве представлены общие сведения о Cucumber , широко используемом инструменте для приемочного тестирования пользователей, и о том, как использовать его в тестах REST API.

Кроме того, чтобы сделать статью автономной и независимой от каких-либо внешних REST-сервисов, мы будем использовать WireMock, библиотеку веб-сервисов-заглушек и имитаторов. Если вы хотите узнать больше об этой библиотеке, обратитесь к введению в WireMock .

2. Огурец – язык огурца

Cucumber — это среда тестирования, поддерживающая разработку, управляемую поведением (BDD) , позволяющая пользователям определять операции приложения в виде обычного текста. Он работает на основе доменного языка Gherkin (DSL). Этот простой, но мощный синтаксис Gherkin позволяет разработчикам и тестировщикам писать сложные тесты, делая его понятным даже для нетехнических пользователей.

· 5 мин. чтения

1. Обзор

В этой статье мы познакомим вас с Karate , средой тестирования Behavior Driven Development (BDD) для Java.

2. Каратэ и БДД

Karate построен на основе Cucumber , другой среды тестирования BDD , и использует некоторые из тех же концепций. Одним из таких является использование файла Gherkin, который описывает тестируемую функцию . Однако, в отличие от Cucumber, тесты написаны не на Java и полностью описаны в файле Gherkin.

Файл корнишона сохраняется с расширением « .feature» . Он начинается с ключевого слова Feature , за которым следует имя функции в той же строке. Он также содержит различные тестовые сценарии, каждый из которых начинается с ключевого слова « Сценарий » и состоит из нескольких шагов с ключевыми словами « Дано », « Когда », « Тогда », « И » и « Но » .

· 3 мин. чтения

1. Введение

Всякий раз, когда мы объявляем переменную или создаем объект, он сохраняется в памяти. На высоком уровне Java делит память на два блока: стек и кучу . Обе памяти хранят определенные типы данных и имеют разные схемы их хранения и доступа.

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

2. Пул строковых констант

Пул констант String — это специальная область памяти. Когда мы объявляем строковый литерал, JVM создает объект в пуле и сохраняет его ссылку в стеке. Перед созданием каждого объекта String в памяти JVM выполняет несколько шагов, чтобы уменьшить нагрузку на память. `` ``

· 8 мин. чтения

1. Обзор

Jackson — это широко используемая библиотека Java, которая позволяет нам удобно сериализовать/десериализовать JSON или XML.

Иногда мы можем столкнуться с « java.lang.ClassCastException: java.util.LinkedHashMap не может быть приведен к X », когда пытаемся десериализовать JSON или XML в набор объектов.

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

2. Понимание проблемы

· 4 мин. чтения

1. Введение

В этом простом руководстве демонстрируется использование нескольких асинхронных и потоковых объектов в Spring MVC 5.xx.

В частности, мы рассмотрим три ключевых класса:

  • ResponseBodyEmitter
  • SseEmitter
  • StreamingResponseBody

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

2. ResponseBodyEmitter

· 8 мин. чтения

1. Введение

Выбор правильного инструмента для работы может быть сложной задачей. В этом руководстве мы упростим это, сравнив три инструмента нагрузочного тестирования веб-приложений — Apache JMeter, Gatling и The Grinder — с простым REST API.

2. Инструменты нагрузочного тестирования

Во-первых, давайте быстро рассмотрим некоторые предыстории каждого из них.

2.1. Гатлинг

· 3 мин. чтения

1. Обзор

Сборка мусора — это чудо языка программирования Java, предоставляющее нам автоматическое управление памятью. Сборка мусора скрывает детали необходимости ручного выделения и освобождения памяти. Хотя этот механизм является фантастическим, иногда он работает не так, как нам хотелось бы. В этом руководстве мы рассмотрим параметры ведения журнала Java для статистики сборки мусора и узнаем, как перенаправить эту статистику в файл .

2. Флаги ведения журнала сборщика мусора в Java 8 и более ранних версиях

Во-первых, давайте рассмотрим флаги JVM, связанные с ведением журнала GC в версиях Java до Java 9.

2.1. -XX:+ПечатьГК

· 4 мин. чтения

1. Обзор

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

Во-первых, мы рассмотрим различные типы алгоритмов GC. После этого мы увидим, как циклические ссылки обрабатываются в JVM.

Также стоит отметить, что GC не является частью спецификации JVM и оставлен на усмотрение разработчика . Следовательно, каждая реализация JVM может иметь разные стратегии GC или вообще не иметь их.

В этой статье мы сосредоточимся на одной конкретной реализации JVM: HotSpot JVM. Мы также можем использовать термины JVM и HotSpot JVM взаимозаменяемо на протяжении всей статьи.

2. Подсчет ссылок

· 5 мин. чтения

1. Почему регистраторы?

При написании программы или разработке производственного корпоративного приложения использование System.out.println кажется самым простым и легким вариантом. В путь к классам не нужно добавлять дополнительные библиотеки и выполнять дополнительные настройки.

Но использование System.out.println сопряжено с несколькими недостатками, которые влияют на его удобство использования во многих ситуациях. В этом уроке мы обсудим, почему и когда мы хотим использовать Logger вместо старых простых System.out и System.err . Мы также покажем несколько быстрых примеров с использованием среды ведения журналов Log4J2.

2. Настройка

Прежде чем мы начнем, давайте рассмотрим необходимые зависимости и конфигурации Maven.