我创建了一个工厂来提供 IMyProcessor
基于一些布尔标志。下面用我的两个实现填充Map。
@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() {}
}
我想基于布尔标志async true/false进行测试,返回正确的实现。
看看如何编写这样的测试用例会很有帮助。我将接口的实现作为构造注入自动连接到列表中,然后使用字符串键添加到Map中。
除了答案之外,我还愿意接受其他可能使测试更容易的想法/重构。
暂无答案!
目前还没有任何答案,快来回答吧!