我创建了一个工厂来提供IMyProcessor
基于一些布尔标志的实例。下面用我的两个实现填充地图。
@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;
}
}
我现在正在尝试使用 Junit5 编写单元测试,但我正在努力设置实现列表:
我尝试了以下方法:
@ExtendWith(MockitoExtension.class)
class ProcessorFactoryTest {
@InjectMocks
private MyProcessorFactory myProcessorFactory;
@Test
void testAsyncIsReturned() {
}
@Test
void testSyncisReturned() {}
}
我想根据布尔标志异步真/假进行测试,返回正确的实现。
了解您如何编写此类测试用例将很有帮助。我将接口的实现作为构造注入自动装配到列表中,然后使用字符串键添加到地图中。
除了答案之外,我对其他可能使测试更容易的想法/重构持开放态度。