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

240 записей с тегом "Тестирование"

Посмотреть все теги

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

1. Обзор

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

Бывают ситуации, когда единственное, что меняется между несколькими тестами, — это параметры. Сам JUnit имеет поддержку параметризации, и JUnitParams значительно улучшает эту функциональность.

2. Зависимость от Maven

Чтобы использовать JUnitParams в нашем проекте, нам нужно добавить его в наш pom.xml :

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

1. Обзор

В этой статье мы обсудим новую среду тестирования на основе Java под названием Lambda Behave .

Как следует из названия, эта среда тестирования предназначена для работы с Java 8 Lambdas. Далее в этой статье мы рассмотрим спецификации и рассмотрим пример для каждой из них.

Зависимость Maven, которую нам нужно включить:

<dependency>           
<groupId>com.insightfullogic</groupId>
<artifactId>lambda-behave</artifactId>
<version>0.4</version>
</dependency>

Последнюю версию можно найти здесь .

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

1. Обзор

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

Spock — это среда тестирования для Java и Groovy , которая помогает автоматизировать процесс ручного тестирования программного приложения. Он представляет свои собственные макеты, заглушки и шпионы и поставляется со встроенными возможностями для тестов, которые обычно требуют дополнительных библиотек.

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

2. Зависимости Maven

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

1. Обзор

В этом уроке мы рассмотрим расширения Spock .

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

Spock имеет широкий спектр различных расширений , которые мы можем подключить к жизненному циклу спецификации.

Давайте узнаем, как использовать наиболее распространенные расширения.

2. Зависимости Maven

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

1. Введение

AssertJ — это библиотека, предоставляющая плавные утверждения для Java. Подробнее об этом можно прочитать здесь и здесь .

Недавно была выпущена версия 3.6.0 вместе с двумя небольшими исправлениями ошибок 3.6.1 и 3.6.2.

Сегодня с нами Джоэл Костильола — создатель библиотеки, который расскажет вам еще немного о релизе и планах на будущее.

«Мы пытаемся сделать AssertJ действительно ориентированным на сообщество»

2. Версии 2.6.0 и 3.6.0 были выпущены почти одновременно. В чем разница между ними?

Версии 2.x ориентированы на Java 7, а версии 3.x — на Java 8. Другой способ увидеть это состоит в том, что 3.x = 2.x + специфические функции Java 8.

3. Какие самые заметные изменения/дополнения появились в 3.6.0/2.6.0?

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

hasSuppresedException()

hasNoSuppresedExceptions()

3.6.0 дополнительно получил способ проверки множественных утверждений для элементов массива/итерируемых/карты:

  • всеудовлетворить ()
  • hasEntrySatisfying ()

4. С момента выпуска 3.6.0 появилось два выпуска исправлений (3.6.1, 3.6.2). Не могли бы вы рассказать нам немного больше, что там произошло и что нужно было исправить?

В 3.6.1 filteredOn(Predicate) работал только со списком , но не с Iterable, что довольно плохо.

В 3.6.2 мы не додумались извлекать свойства из дефолтного геттера Java 8, оказывается он не работал из коробки после некоторого внутреннего рефакторинга.

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

5. Сталкивались ли вы с какими-либо интересными техническими проблемами при работе над новейшим релизом?

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

Java 8 требовательна к «неоднозначным» сигнатурам методов. Мы добавили новый метод assertThat, который принимает ThrowingCallable (простой класс, который является Callable , выбрасывающим исключение). Оказалось, что Java 8 путает его с другим методом assertThat , который принимает Iterable!

Это было самым удивительным для меня, поскольку я не вижу никакой двусмысленности между ними.

6. Планируете ли вы в ближайшее время новый крупный релиз? Что-нибудь, что будет использовать дополнения Java 9?

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

Паскаль Шумахер, который присоединился к команде AssertJ, проделал некоторую работу над Java 9, чтобы проверить совместимость, некоторые вещи не работают, в основном те, которые полагаются на самоанализ, поскольку Java 9 меняет правила доступа. Что мы сделаем, так это запустим ветку 4.x, которая будет ориентирована на Java 9, следуя той же стратегии, что и 3.x против 2.x, у нас будет 4.x = 3.x + функции Java 9.

Как только 4.0 будет официально выпущен, мы, скорее всего, прекратим активную разработку 2.x, но продолжим принимать PR, поскольку у нас нет возможности синхронизировать 3 версии, я имею в виду, что мы сообщаем о любых изменениях с версии nx на n+1.x. версию, поэтому добавление чего-либо в 2.x нужно будет сообщать как в 3.x, так и в 4.x, а это слишком много работы на данный момент.

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

1. Введение

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

Netty — очень универсальная среда для написания высокопроизводительных асинхронных приложений. Модульное тестирование таких приложений может быть сложным без правильных инструментов.

К счастью, фреймворк предоставляет нам класс EmbeddedChannel , который облегчает тестирование ChannelHandlers .

2. Настройка

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

1. Обзор

В этой статье мы рассмотрим концепцию тестирования свойств и ее реализацию в библиотеке vavr-test .

Тестирование на основе свойств (PBT) позволяет нам указать высокоуровневое поведение программы в отношении инвариантов, которых она должна придерживаться.

2. Что такое тестирование свойств?

Свойство представляет собой комбинацию инварианта с генератором входных значений . Для каждого сгенерированного значения инвариант обрабатывается как предикат и проверяется, дает ли он истинное или ложное значение для этого значения.

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

1. Обзор

В этом кратком руководстве показано, как мы можем протестировать HTTP-API с отслеживанием состояния с помощью WireMock .

Чтобы начать работу с библиотекой, сначала ознакомьтесь с нашим руководством Introduction to WireMock .

2. Зависимости Maven

Чтобы иметь возможность воспользоваться библиотекой WireMock , нам нужно включить в POM следующую зависимость:

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

1. Обзор

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

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

В этом уроке мы увидим, когда и как имитировать методы void с помощью EasyMock.

2. Зависимость от Maven

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

1. Введение

В этом руководстве мы рассмотрим различия между сбоем и ошибкой в тестах JUnit .

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

2. Пример кода

Давайте рассмотрим очень упрощенный пример, а именно класс калькулятора, который имеет один метод для деления двух значений типа double :