Существуют ли такие инструменты, как Jqwik, для простого тестирования класса времени Google API? (DateTime, EventDateTime... и т. д.)

Я работал над реализацией тестового кода для логики, связанной с Календарем Google, и наткнулся на библиотеку под названием Fixture Monkey. Кратко поясним: Fixture Monkey — это библиотека, которая упрощает создание тестовых объектов при использовании JUnit.

Fixture Monkey предоставляет плагин для Jqwik, поэтому генерировать произвольные значения для классов времени, поддерживаемых Java, таких как LocalDateTime, было несложно.

Генерация случайных значений LocalDateTime с использованием Fixture-monkey и Jqwik

default LocalDateTimeArbitrary localDateTimes() {
    LocalDateTime now = LocalDateTime.now();
    return DateTimes.dateTimes()
        .between(
            now.minusDays(365),
            now.plusDays(365)
        );
}

TestCode генерации LocalDateTime

@Test
void localDateTimeRandomValueGenerationTest() {
    FixtureMonkey fixtureMonkey = new FixtureMonkeyBuilder()
        .plugin(new JqwikPlugin())
        .build();
    LocalDateTime localDateTime = fixtureMonkey.giveMeOne(LocalDateTime.class);
    System.out.println(localDateTime);
}

Этот курс делает мою жизнь намного проще...

Однако похоже, что Jqwik не поддерживает классы времени Google API, такие как EventDateTime. Поэтому Fixture-Monkey также не обеспечивает случайную генерацию значений для классов времени Google API.😥

Поэтому мне интересно, есть ли такая библиотека, как Jqwik, которая поддерживает классы времени Google. И если есть хорошая библиотека для тестирования API Календаря Google, порекомендуйте ее.

Хорошего дня - Кевин

Есть ли простой способ сопоставить встроенные типы времени/даты Java с соответствующими типами Google? Если да, то вы можете просто сопоставить произвольные значения модуля времени jqwik.

johanneslink 14.06.2024 11:46

Не думаю, что я что-то нашел после просмотра... Похоже, мне придется создать библиотеку самому.🥹😰 хорошего дня - Кевин

Kevin 14.06.2024 13:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
2
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Такое ощущение, что прошел около месяца с тех пор, как я сам начал создавать библиотеку..!

Я наконец-то реализовал библиотеку, которая случайным образом генерирует класс времени Google (EventDateTime).

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


Сначала добавьте следующую зависимость в вашу конфигурацию Gradle/Maven.

Рекомендуется проверить следующую ссылку, чтобы убедиться, что это последняя версия.

// gradle

implementation 'io.github.yonggoose:event-date-time-maker:0.7.5'

//maven

<dependency>
    <groupId>io.github.yonggoose</groupId>
    <artifactId>event-date-time-maker</artifactId>
    <version>0.7.5</version>
</dependency>

Во-вторых, вы можете создать EventDateTime следующим образом:

EventDateTimeArbitrary eventDateTimeArbitrary = EventDateTimeArbitrary.builder()
    .setYear(2024)
    .setMonth(7)
    .setDay(7)
    .build();
EventDateTime eventDateTime = eventDateTimeArbitrary.getEventDateTime();

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


Этот проект имеет открытый исходный код и распространяется по лицензии EPL-2.0.

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

URL-адрес репозитория GitHub: https://github.com/IDMaker-io/MaKer

Если вы хотите внести свой вклад, пожалуйста, не стесняйтесь оставлять вопрос!

Другие вопросы по теме

Похожие вопросы

Mockito выдает ошибку. Несоответствие аргументов строгой заглушки
Как настроить повторные попытки для неудачных событий приложения Spring, сохраненных в репозитории публикаций событий Spring Modulith?
Java.lang.NoClassDefFoundError: jakarta/servlet/SingleThreadModel — ошибка при использовании apache spark 4.0-preview1
Задержка запроса Spring WebClient из-за неактивного соединения
Какой неустаревший способ установки менеджера транзакций в контейнер прослушивателя - это Spring Kafka 3.2?
Как получить доступ к текущему активному профилю статическим методом?
Импорт swagger 3 не найден после обновления Spring 3
Spring Boot 2.5.6 без Spring Security и конфигурации безопасности, обновленной до Spring Boot 3, из-за чего swagger не работает
Spring Boot 3.3 с ошибкой базы данных поддержки CDS во время процесса сборки
Не удалось безопасно определить назначение хранилища для интерфейса-кандидата репозитория, даже если объект помечен с помощью jakarta.persistence.Entity