I have created a factory to provide instance of IMyProcessor based on some boolean flag.
The below populates the map with both of my implementations.
@Component
public class MyProcessorFactory {
    private static final Map<String, IMyProcessor> processorServiceCache = new HashMap<>();
    @Value("${processor.async:true}")
    private boolean isAsync;
    public MyProcessorFactory(final List<IMyProcessor> processors) {
        for (IMyProcessor service : processors) {
            processorServiceCache.put(service.getType(), service);
        }
    }
    public IMyProcessor getInstance() {
        IMyProcessor processor = isAsync ? processorServiceCache.get("asynchronous") : processorServiceCache.get("synchronous");
        return processor;
    }
}
I am now trying to write a Unit test using Junit5 but I am struggling to setup the List of implementations:
I have tried the following:
@ExtendWith(MockitoExtension.class)
class ProcessorFactoryTest {
    @InjectMocks
    private MyProcessorFactory myProcessorFactory;
    @Test
    void testAsyncIsReturned() {
        
    }
    
    @Test
    void testSyncisReturned() {}
}
I want to test based on the boolean flag async true/false, the correct implementation is returned.
It will be helpful to see how you write such test cases. I autowire the implementations of the interface as construction injection into a list then add to a map using a string key.
Along with answer, I am open to other ideas/refactorings that may make the testing easier.
