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

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

1. Обзор

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

Язык запросов Cassandra (CQL) — это простая альтернатива языку структурированных запросов (SQL). Это декларативный язык, разработанный для обеспечения связи с базой данных. Подобно SQL, CQL также хранит данные в таблицах и организует данные в строки и столбцы.

2. Конфигурация базы данных Cassandra

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

1. Введение

В этой статье мы собираемся создать серверную часть службы блогов на основе службы базы данных Fauna с использованием Spring и Java 17.

2. Настройка проекта

У нас есть некоторые начальные шаги по настройке, которые нам нужно выполнить, прежде чем мы сможем начать создавать наш сервис, в частности, нам нужно создать базу данных Fauna и пустое приложение Spring.

2.1. Создание базы данных фауны

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

1. Обзор

Модульное тестирование с помощью мок-фреймворка уже давно признано полезной практикой, и в последние годы на этом рынке доминирует фреймворк Mockito .

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

Здесь в игру вступает фреймворк PowerMock .

PowerMockito — это API расширения PowerMock для поддержки Mockito. Он предоставляет возможности для работы с Java Reflection API простым способом для преодоления проблем Mockito, таких как отсутствие возможности имитировать окончательные, статические или частные методы.

В этом руководстве будет представлен API PowerMockito и рассмотрено его применение в тестах.

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

1. Обзор

В этом руководстве показано, как игнорировать определенные поля при сериализации объекта в JSON с использованием Jackson 2.x.

Это очень полезно, когда значений по умолчанию Джексона недостаточно, и нам нужно точно контролировать, что сериализуется в JSON — и есть несколько способов игнорировать свойства.

Чтобы копнуть глубже и узнать о других интересных вещах, которые мы можем делать с Джексоном, перейдите к основному учебнику по Джексону .

2. Игнорировать поля на уровне класса

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

1. Обзор

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

В общем, мы хотим реализовать два метода и понять, как ими манипулировать:

  • недействительный замок (строковый ключ)
  • недействительная разблокировка (строковый ключ)

Для простоты руководства мы всегда будем предполагать, что наши ключи являются строками . Вы можете заменить их типом объектов, которые вам нужны, при единственном условии, что методы equals и hashCode определены правильно, потому что мы будем использовать их в качестве ключей HashMap .

2. Простой взаимоисключающий замок

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

1. Обзор

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

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

2. Пример сценария

Давайте представим, что мы сортируем деревья по тому, сбрасывают ли они листья за зиму или нет. У нас есть два класса, Evergreen и Deciduous, оба реализуют интерфейс Tree . У нас есть простой сортировщик, который возвращает правильный тип в соответствии с именем дерева:

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

1. Обзор

В этом коротком руководстве мы собираемся реализовать нестатические методы с аннотациями @BeforeAll и @AfterAll, доступными в Junit5 .

2. @BeforeAll и @AfterAll в нестатических методах

Во время модульного тестирования мы можем иногда захотеть использовать @BeforeAll и @AfterAll в нестатических методах установки и демонтажа — например, в тестовом классе @ Nested или в качестве методов интерфейса по умолчанию.

Создадим тестовый класс с методами @BeforeAll и @AfterAll как нестатическими:

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

1. Введение

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

В этом руководстве мы рассмотрим несколько способов интеграции Cucumber с Gradle для запуска спецификаций BDD в рамках сборки проекта.

2. Настройка

Во-первых, давайте настроим проект Gradle, используя Gradle Wrapper .

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

1. Обзор

В этой статье мы исследуем ошибку « Объявленный пакет не соответствует ожидаемому пакету » в java-проекте.

Обычно мы рассчитываем поместить наши java-файлы в папки, соответствующие структуре пакета . Наиболее распространенная причина ошибки — когда наша IDE обнаруживает несоответствие между объявлением пакета и физическим расположением файла Java.

В этом кратком руководстве мы рассмотрим пример этой ошибки, как она проявляется в IDE и Maven и как ее устранить. Мы также рассмотрим несколько других советов и приемов.

2. Пример ошибки

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

1. Обзор

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

Java помогает нам выбрать подходящий разделитель и предоставляет функции, помогающие нам создавать пути, которые работают в операционной системе хоста.

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

2. Разделитель файлов