Cron expression validator for Apache Quartz
In terms of overall hierarchy here, the CronTester class is just 'fluff' and does not do anything except provide an main method. The interesting class is: CronDateCreator.
CronDateCreator is a very lightweight class. It essentially does nothing that requires it to be a class... it wraps a String value in a CronExpression, is that CronExpression reused for anything?
It strikes me that the standard use-case for this class would be:
CronDateCreator cdc = new CronDateCreator(input);
List&lt;Date&gt; dates = cdc.createValidTimeDatesFromNow(numberOfDates);

and then the cdc will be forgotten.
Is this a case of where a static method is maybe all you need?
Something like:
public static List&lt;Date&gt; createValidTimeDatesFromNow(String expression, int numberOfDates) {
    ....
}

Just a thought...
Date
Now, about the Date return values.
Date is a much maligned class in Java. It has so many nuances, issues, and tweaks that it was initially 'forked' and rewritten as JodaTime in an open source library, then, in Java8, they have pulled the best from JodaTime, and incorporated some other compatibility and functionality changes, and created the new java.time.* package.
Any code written to support Java8 or newer should essentially abandon Date, and work with Instant  instead.
You should use your class/static methods to translate the Dates back to Instants, and go from there.
Actual code:
Your method here could be neatened up a lot:

public List&lt;Date&gt; createValidTimeDates(Date startingDate, int numberOfDates) { 
    Date nextValidDate = cron.getNextValidTimeAfter(startingDate);
    List&lt;Date&gt; results = new ArrayList&lt;&gt;();

    for (int i = 0; i &lt; numberOfDates; i++) {
        results.add(nextValidDate);
        nextValidDate = cron.getNextValidTimeAfter(nextValidDate);
    }

    return results;
}


For a start, you know how large the ArrayList will be, so set the size on the constructor:
List&lt;Date&gt; results = new ArrayList&lt;&gt;(numberOfDates);

Then, your loop logic is off... how about the following?:
public List&lt;Date&gt; createValidTimeDates(Date startingDate, final int numberOfDates) { 
    List&lt;Date&gt; results = new ArrayList&lt;&gt;(numberOfDates);
    
    for (int i = 0; i &lt; numberOfDates; i++) {
        startingDate = cron.getNextValidTimeAfter(startingDate);
        results.add(startingDate);
    }        
    return results;
}