Абстрагируйте проверку даты и времени планировщика в отдельный интерфейс.Имейте класс, который реализует этот интерфейс для вашего живого кода / среды (с использованием DateTime или того, что используется в настоящее время) и класс, который реализует его для вашей среды тестирования, что позволяет вам ускорить / изменить время.Таким образом, вы можете тестировать функциональность на основе времени быстро и на лету.
A очень простой пример, это будет зависеть от вашего планировщика:
public interface IDateTimeProvider
{
DateTime CurrentDateTime { get; }
}
public class DateTimeProvider : IDateTimeProvider
{
public DateTime CurrentDateTime
{
get { return DateTime.Now; }
}
}
public class TestDateTimeProvider : IDateTimeProvider
{
public DateTime CurrentDateTime { get; set; }
}
public class Scheduler
{
private readonly IDateTimeProvider DateTimeProvider;
public Scheduler(IDateTimeProvider provider)
{
DateTimeProvider = provider;
}
}