Я работал над реализацией тестового кода для логики, связанной с Календарем Google, и наткнулся на библиотеку под названием Fixture Monkey. Кратко поясним: Fixture Monkey — это библиотека, которая упрощает создание тестовых объектов при использовании JUnit.
Fixture Monkey предоставляет плагин для Jqwik, поэтому генерировать произвольные значения для классов времени, поддерживаемых Java, таких как LocalDateTime, было несложно.
default LocalDateTimeArbitrary localDateTimes() {
LocalDateTime now = LocalDateTime.now();
return DateTimes.dateTimes()
.between(
now.minusDays(365),
now.plusDays(365)
);
}
@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, порекомендуйте ее.
Хорошего дня - Кевин
Не думаю, что я что-то нашел после просмотра... Похоже, мне придется создать библиотеку самому.🥹😰 хорошего дня - Кевин
Такое ощущение, что прошел около месяца с тех пор, как я сам начал создавать библиотеку..!
Я наконец-то реализовал библиотеку, которая случайным образом генерирует класс времени 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
Есть ли простой способ сопоставить встроенные типы времени/даты Java с соответствующими типами Google? Если да, то вы можете просто сопоставить произвольные значения модуля времени jqwik.