### Question:
AbstractRetryMessageListenerFactory extends AbstractMessageListenerFactory<K, V, L> { @Override public L getInstance( String topic, String groupId ) { L messageListener = super.getInstance( topic, groupId ); messageListener.setRetryMaxAttempts( retryMaxAttempts ); messageListener.setBackOffInitialInterval( backOffInitialInterval ); messageListener.setBackOffIMaxInterval( backOffIMaxInterval ); messageListener.setBackOffIMultiplier( backOffIMultiplier ); return messageListener; }  void setRetryMaxAttempts( int retryMaxAttempts ); void setBackOffInitialInterval( long backOffInitialInterval ); void setBackOffIMaxInterval( long backOffIMaxInterval ); void setBackOffIMultiplier( double backOffIMultiplier ); int getRetryMaxAttempts(); long getBackOffInitialInterval(); long getBackOffIMaxInterval(); double getBackOffIMultiplier(); @Override L getInstance( String topic, String groupId );  }### Answer:
@Test public void getInstanceShouldReturnInstanceWithTopicAndGroupSet() { AbstractRetryMessageListener instance = abstractRetryMessageListenerFactory.getInstance( "topic", "groupId" ); assertNotNull( instance ); assertEquals( abstractRetryMessageListener, instance ); assertEquals( "topic", instance.getTopic() ); assertEquals( "groupId", instance.getGroupId() ); }
@Test public void getInstanceShouldReturnInstanceWithTopicAndGroupEqualToTopic() { AbstractRetryMessageListener instance = abstractRetryMessageListenerFactory.getInstance( "topic", null ); assertNotNull( instance ); assertEquals( abstractRetryMessageListener, instance ); assertEquals( "topic", instance.getTopic() ); assertEquals( "topic", instance.getGroupId() ); }