### Question:
ChronicleMapRetryFailoverPolicy implements FailoverPolicy<ItemSource>, LifeCycle { @Override public void start() { if (!isStarted()) { validateSetup(); this.shutdown = delayedShutdown(); schedule(createExecutor("Retry-main"), createRetryProcessor(), retryDelay); if (monitored) { schedule(createExecutor("Retry-metrics"), createMetricPrinter(), monitorTaskInterval); } state = State.STARTED; } } protected  ChronicleMapRetryFailoverPolicy(Builder builder); @Override void addListener(U failoverListener); @Override void deliver(ItemSource failedItemSource); @PluginBuilderFactory static ChronicleMapRetryFailoverPolicy.Builder newBuilder(); @Override void start(); @Override void stop(); @Override LifeCycle stop(long timeout, boolean async); @Override boolean isStarted(); @Override boolean isStopped(); static final String PLUGIN_NAME; }### Answer:
@Test public void lifecycleStartFailsIfNoListenersConfigured() throws IOException { ChronicleMapRetryFailoverPolicy failoverPolicy = createDefaultTestFailoverPolicyBuilder().build(); expectedException.expect(ConfigurationException.class); expectedException.expectMessage( RetryListener.class.getSimpleName() + " was not provided for " + ChronicleMapRetryFailoverPolicy.class.getSimpleName() ); failoverPolicy.start(); }