Validating Cron Expression Handling in Spring Cloud Alibaba
This test suite validates the CronExpression utility class in Spring Cloud Alibaba’s SchedulerX component, focusing on cron expression validation and time calculation functionality. The tests ensure proper handling of various cron patterns and time-based operations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
alibaba/spring-cloud-alibaba
spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/test/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpressionTest.java
/*
* Copyright 2024-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.cloud.scheduling.schedulerx.util;
import java.text.ParseException;
import java.util.Date;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author yaohui
*/
class CronExpressionTest {
@Test
void isValidExpression() {
assertThat(CronExpression.isValidExpression("0 0 0 * * ?")).isEqualTo(true);
assertThat(CronExpression.isValidExpression("0 */5 * * * ?")).isEqualTo(true);
assertThat(CronExpression.isValidExpression("0 0 8 1 JAN ?")).isEqualTo(true);
assertThat(CronExpression.isValidExpression("0 0 8 ? 10 THU")).isEqualTo(true);
assertThat(CronExpression.isValidExpression("0 0 8 ? 10 THU-SAT")).isEqualTo(true);
assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#1")).isEqualTo(true);
assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#5")).isEqualTo(true);
// false
assertThat(CronExpression.isValidExpression("0 0 8 1 JAW ?")).isEqualTo(false);
assertThat(CronExpression.isValidExpression("0 0 8 ? 10 THP-SAT")).isEqualTo(false);
assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#0")).isEqualTo(false);
assertThat(CronExpression.isValidExpression("0 0 8 ? 10 FRI#6")).isEqualTo(false);
}
@Test
void getTimeAfter() throws ParseException {
CronExpression cronExpression = new CronExpression("0 0 8 1 JAN ?");
Date nextDate = cronExpression.getTimeAfter(new Date());
System.out.println(nextDate);
assertThat(nextDate).isNotNull();
cronExpression = new CronExpression("0 */5 * * * ?");
nextDate = cronExpression.getTimeAfter(new Date());
System.out.println(nextDate);
assertThat(nextDate).isNotNull();
}
@Test
void getTimeBefore() throws ParseException {
CronExpression cronExpression = new CronExpression("0 0 8 1 JAN ?");
Date beforeDate = cronExpression.getTimeBefore(new Date());
System.out.println(beforeDate);
assertThat(beforeDate).isNotNull();
cronExpression = new CronExpression("0 */5 * * * ?");
beforeDate = cronExpression.getTimeBefore(new Date());
System.out.println(beforeDate);
assertThat(beforeDate).isNotNull();
}
}