Загружайте и анализируйте файловые ресурсы в тестах JUnit5 с помощью всего пары аннотаций.
Привет, разработчики, в этом посте я хочу представить Puma4j, новый проект с открытым исходным кодом, который я недавно опубликовал, который, я надеюсь, облегчит вам жизнь при написании тестов JUnit 5. .
Проверьте репозиторий проекта на Github
Проект
При тестировании микросервисов нам обычно нужно имитировать поведение внешних интеграций, имитируя HTTP-запросы/ответы и сообщения, поступающие в темы или очереди. Для этого нам нужно создать много полезной нагрузки в наших тестах.
Вместо создания тестовых данных в нашем коде, который иногда делает наши тесты немного «грязными», или создания одного и того же стандартного кода все время для чтения и анализа файлов ресурсов, почему бы не использовать JUnit 5 чтобы сделать это простым и стандартизированным способом, а также получить удовольствие от написания нового кода?
Вот почему был создан Puma4j. С помощью Puma4j вы можете загружать и преобразовывать ресурсы с помощью всего пары аннотаций.
Взгляните на пример использования ниже:
Установка с помощью Gradle
implementation "io.github.vitorsalgado.puma4j:puma4j-junit5-extension:4.0.2"
Пример использования
Рассмотрим сценарий, в котором у вас есть следующие файлы в каталоге test resources:
- модель.json
- test.txt
- data.yml
@UsePuma4j class YourJUnit5Test { static class Model { public String hello; } @Res("data.yml") private static Model ymlData; @Res("test.txt") private String txt; @Test void test(@Res("model.json") Model model) { assertEquals("world", model.hello); assertEquals("world", ymlData.hello); assertEquals("hello world", txt); } }
Следуя приведенному выше примеру, чтобы использовать Puma4j, нам нужно аннотировать наш тестовый класс с помощью '@UsePuma4j', а затем все поля и параметры метода, в которые мы хотим вводить ресурсы. необходимо аннотировать с помощью '@Res(RESOURCE_NAME_AND_EXTENSION).'
Puma4j автоматически загрузит ресурсы и преобразует их в зависимости от типа поля или параметра. Например, вы можете загрузить необработанное значение файла, используя массив строк или байтов.
Поддерживаемые типы файлов
Puma4j может преобразовывать следующие ресурсы в экземпляры объектов Java:
- JSON
- YAML
- Свойства
Содержимое файлов других типов, например .txt, можно загрузить в строку или массив байтов.
Пользовательские конвертеры
Мы можем использовать специальный конвертер для ваших ресурсов. Реализуйте интерфейс Unmarshaller<O>
и укажите ссылку на класс в аннотации '@Use(YourCustomConverter.class)'. Аннотацию «@Use» можно применять к параметрам класса, поля и метода.
Переключение конвертеров JSON
По умолчанию Puma4j использует Jackson Object Mapper для преобразования ресурсов JSON в объекты Java. Чтобы переключиться на Gson, используйте аннотацию '@UseGson'. Аннотацию можно применить к параметрам класса, поля и метода. Кроме того, существует «@UseJackson», чтобы заставить определенный ресурс использовать Object Mapper.
Взгляните на документацию проекта и исходный код: